A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

monterr

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

学完C语言了,在写作业的时候,发现我写的代码用for循环和用递归打印出来的结果不一致啊!  求帮忙,求解答!
  1. /*
  2. 提示用户输入一个正整数n,求出并输出下列结果:1! + 2! + 3! + 4! + ... + n!
  3. 要求:用至少两种方式实现(函数名自拟,函数个数不限)
  4. 1> 非递归
  5. 2> 递归
  6. */

  7. #include <stdio.h>

  8. //int digui(int n);

  9. int feidigui(int n);

  10. int main()
  11. {
  12.     int n = 0;
  13.    
  14.     while(n <= 0)
  15.     {   //提示用户输入一个正整数
  16.         printf("请输入一个正整数:\n");
  17.         //接收用户输入的值
  18.         scanf("%d", &n);
  19.     }
  20.    
  21.     //int c = digui(n);
  22.     int c = feidigui(n);
  23.    
  24.     printf ("%d\n", c);
  25.    
  26.    
  27.     return 0;
  28. }

  29. int feidigui(int n)
  30. {
  31.     int max = 0;
  32.    
  33.     for(int i = 1;i <= n; i++)
  34.     {
  35.         int ji = 1;
  36.         for (int j = 1; j <= i; j++)
  37.         {
  38.             ji *= j;
  39.         }
  40.         max += ji;
  41.     }
  42.    
  43.     return max;
  44. }
  45. /*
  46. int digui(int n)
  47. {
  48.     if ( n == 1) return 1;
  49.    
  50.     return digui(n - 1) * n;
  51. }*/
复制代码

评分

参与人数 1技术分 +1 收起 理由
星河鹭起 + 1

查看全部评分

1 个回复

倒序浏览
非递归没问题啊,递归你没有累加。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马