问题:
求出n的阶乘。
思路:
- n的阶乘=1*2*3*4*5*...*(n-1)*n.
- 不使用递归,那么有,利用循环范围为1到n个数。那么里面有num=num*i。
- 1*1,1*2,(1*2)*3, (1*2*3)*4......
- 使用递归的话,由于递归为先向内部走,最后从内部往外逐层返值,所以当n为1时,fac(n)=1,当n>1时,n*fac(n-1)
代码如下:
不使用递归:
#include <stdio.h>
int fac(int n)
{
int i=1,num=1;
for(i=1;i<=n;i++)
{
num = num * i;
}
return num;
}
int main()
{
int n;
scanf("%d",&n);
printf("%d的阶乘为%d\n",n,fac(n));
return 0;
}
使用递归:
#include <stdio.h>
int fac(int n)
{
if(n<=1)
return 1;
else
return n*fac(n-1);
}
int main()
{
int n;
scanf("%d",&n);
printf("%d的阶乘为%d\n",n,fac(n));
return 0;
}