黑马程序员技术交流社区
标题:
计算阶乘,为什么用递归和for循环打印出来的结果不一致?
[打印本页]
作者:
monterr
时间:
2014-10-23 09:03
标题:
计算阶乘,为什么用递归和for循环打印出来的结果不一致?
学完C语言了,在写作业的时候,发现我写的代码用for循环和用递归打印出来的结果不一致啊! 求帮忙,求解答!
/*
提示用户输入一个正整数n,求出并输出下列结果:1! + 2! + 3! + 4! + ... + n!
要求:用至少两种方式实现(函数名自拟,函数个数不限)
1> 非递归
2> 递归
*/
#include <stdio.h>
//int digui(int n);
int feidigui(int n);
int main()
{
int n = 0;
while(n <= 0)
{ //提示用户输入一个正整数
printf("请输入一个正整数:\n");
//接收用户输入的值
scanf("%d", &n);
}
//int c = digui(n);
int c = feidigui(n);
printf ("%d\n", c);
return 0;
}
int feidigui(int n)
{
int max = 0;
for(int i = 1;i <= n; i++)
{
int ji = 1;
for (int j = 1; j <= i; j++)
{
ji *= j;
}
max += ji;
}
return max;
}
/*
int digui(int n)
{
if ( n == 1) return 1;
return digui(n - 1) * n;
}*/
复制代码
作者:
Beacon
时间:
2014-10-23 10:45
非递归没问题啊,递归你没有累加。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2