前言:
此篇面向C语言初学者,针对函数的递归调用方面的练习。
正文:
#include<stdio.h>
int main() {
int fac(int n); //fac函数声明
int n;
int y;
printf("input an integer number:");
scanf("%d",&n); //输入要求阶乘的数
y=fac(n);
printf("%d!=%d\n",n,y);
return 0;
}
//用递归方法求n!
int fac(int n){ //定义fac函数
int f;
if(n<0) //n不能小于0
printf("n<0,data error!");
else if(n==0||n==1) //n=0或,1时n!=1
f=1;
else f=fac(n-1)*n; //n>1时,n!=n*(n-1)
return f;
}
注意:
函数的递归调用重点在于调用自身。
①例子:
//①例子
int f(int x){
int y,z;
z=f(y); //在执行f函数的过程中又要调用f函数
return(2*z);
}
一般分为两种:
①直接调用自身
在调用函数f的过程中,又要调用f函数,这是直接调用本函数,见图7.6。
②间接调用自身
如果在调用过程中要调用f2函数,而在调用f2函数过程中又要调用f1函数,就是间接调用本函数,见图7.7。
总结:
正文的运行结果: