鱼C论坛

 找回密码
 立即注册
查看: 2796|回复: 3

谁能帮忙解释一下递归

[复制链接]
发表于 2011-11-22 14:42:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. int f(int x)
  2. {
  3.               long temp;
  4.               if(x<0)
  5.              {
  6.                  printf("input error:\n");
  7.               }
  8.              else if(x==0 || x==1)
  9.             {
  10.                          temp= 1;
  11.              }
  12.          else
  13.             {
  14.                          temp = f(x-1)*x;   //这个不理解
  15.              }
  16.                      return temp;
  17. }
复制代码
      假设X=5,每调用1次f函数,x就减1,那么我的理解步骤应该是如下
temp = f(5-1)*5;
temp = f(4-1)*5;
temp = f(3-1)*5;
temp = f(2-1)*5;
temp = 1;
然后就返回,等于1*5+2*5+3*5+4*5+5*5 =75,跟程序运行的结果不一样啊,程序运行的结果是120,是正确的
但是我按我的思路来理解,却是错的。
请问是哪里出问题了?



PS:为神马我用火狐浏览器贴代码,不会给我自动排版呢?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-11-22 15:11:12 | 显示全部楼层
怎么会是1*5+2*5+3*5+4*5+5*5呢,是1*2*3*4*5
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-11-22 15:17:09 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-11-22 15:20:13 | 显示全部楼层
楼住的代码是用来求阶乘的,就是1*2*3*....*n,而不是1*5+2*5+3*5+4*5+5*5。
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-9 14:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表