省会计信息服务平台:一个C语言的题目不太理解

来源:百度文库 编辑:高考问答 时间:2024/04/28 15:48:35
[案例7.5] 用递归法计算n!。
/*案例代码文件名:AL7_5.C*/
/*功能:通过函数的递归调用计算阶乘*/
long power(int n)
{ long f;
if(n>1) f=power(n-1)*n;
else f=1;
return(f);
}
main()
{ int n;
long y;
printf("input a inteager number:\n");
scanf("%d",&n);
y=power(n);
printf("%d!=%ld\n",n,y);
getch();
}

假设输入n为5。
将5作为参数n传递给power函数,检测n>1,再次调用power函数并且以n-1=4作为新的参数传递给power...如此反复直到被传递的参数为1,完成计算。
这是很基本的递归,与数学归纳法根本沾不上边。

y=power(n); 把n交给上面那个函数计算,算好后赋给y
printf("%d!=%ld\n",n,y);//n的阶乘=y
getch();//等待输入一个字符退出程序不显示字符在屏幕

f=power(n-1)*n;是计算阶乘的,从1乘到自己,这个应该懂吧,
我觉得楼主应该是问函数调用的问题

知道数学 归纳法吧,很象的。
n>1时 power(n)=power(n-1)*n
n=1时 power(n)=1

注意程序书写格式!!
递归就是不断的调用自己!
当函数的参数到指定数值时,自动跳出!

这个递归很基础