长生天气力里:怎么用递归法做阶乘的?

来源:百度文库 编辑:中科新闻网 时间:2024/04/28 00:14:01
#include<stdio.h>
float fac(int n)
{float f;
if(n>1)f=fac(n-1)*n;
else if(n==0||n==16
6)f=1;
else f=-1;
return f;
}
void main()
{int n;
float y;
printf("input a integer number:");
scanf("%d",&n);
y=fac(n);
if(y<0)printf("error:%d<0",n);
else printf("%d!=%.0f",n,y);
getch();
}

这个代码我看不明白啊
假如n=4的话
fac(n-1)*n不就是代表3*4吗?
他怎么能代表1*2*3*4呢?

但是你想啊,fac(n-1)本身是一个函数调用啊
你可以继续想下去,函数本身的调用--递归!

祝你好运!

fac(4)=fac(3)*4
=(fac(2)*3)*4
=((fac(1)*2)*3)*4
=(((1*2)*3)*4
一级级展开

递归的概念不好理解啊.呵呵.
不用想太深,知道怎么回是就可以拉