三 函数的声明和原型

01 在函数调用之前,应该对所调用函数进行声明,指出该函数的返回值类型及形参的个数和类型。

函数声明的一般格式:

函数返回值类型 函数名(形参类型1 形参名1,………………);

*函数声明的位置,一种是在主调函数中对函数进行声明;另外一种是在所有函数的外部进行函数声明。

 

// 编程求1+2en+....+nen

#include <stdio.h>
double power(int p,int q);
double sigma(int m,int n);

int main()
{
    int x,y;
    double sum;
    
    printf("请输入两个函数:\n");
    scanf("%d%d",&x,&y);
    
    sum = sigma(x,y);
    printf("sum=%f\n",sum);
}

double power(int p,int q)
{
    int i;
    double product=1;
    for (i=1; i<=q; i++)
    {
        product = product*p;
        return product;
    }
    
}

double sigma(int m,int n)
{
    int i;
    double p, sum=0;
    for (i=1; i<m; i++)
    {
        p = power(m,n);
        sum = sum+p;
        return sum;
    }
    
}

 

四 函数的嵌套和递归

01 嵌套调用是指在一个函数的定义中出现对另一个函数的调用,即被调函数中又调用其他函数。

 

02 函数在调用过程中,又直接或间接的调用自身,则称函数的递归调用,这种函数也被称为递归函数

// 用递归方法求整数n的阶乘

#include <stdio.h>
double fact(int m);
int main()
{
    int x;
    double result;
    
    printf("请输入一个整数:\n");
    scanf("%d",&x);
    
    result = fact(x);
    
    if (result == -1)
    {
        printf("结果错误\n");
    }
    else
    {
        printf("%d!=%f\n",x,result);
    }
    
    
}

double fact(int m)
{
    if (m<0)
    {
        return -1;
    }
    else if(m==0||m==1)
    {
        return 1;
    }
    else
        return m*fact(m-1);
}