鱼C论坛

 找回密码
 立即注册
查看: 2707|回复: 4

C递推与递归问题

[复制链接]
发表于 2011-10-19 17:15:29 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>

int main()

{
   
  int age(int n);
   
  printf("NO.5,age:%d\n",age(5));
   
  return 0;

}
int age(int n)

{
   
int c;
   
if(n==1)
        
  c=10;
   
else
        
  c=age(n-1)+2;
   
return(c);

}

这个问题我弄不明白了,递归到n=1,他是怎么递推回去的?
如果n为1,递推结束,那么c=age(1-1)+2,那n不该等于0了么?
为什么调试时没有n=0,而是变1、2、3、4、5?
麻烦详细解答下,在线等答案!





小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-19 17:25:56 | 显示全部楼层
本帖最后由 菜得要自杀 于 2011-10-19 17:39 编辑

SW2R2J[5NPI(9TZQ6E3P}Q4.jpg
特意画个图,帮助你理解。。

当碰到Age(5)时,运行到Age(5-1)时,会在这儿再运行Age(5-1)//此时程序并没有运行完,只是运行到这儿,调用另一个方法了,方法结束时,他还是要向下执行的
当他执行到age(1)时,有值了,这个方法(好像C里叫函数)就返回,返回到上个函数调用处,也就是Age(2)

一步一步向下,再一步一步向上,觉得可以。给点分,哈哈。

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-19 17:32:11 | 显示全部楼层
n=1,c=10;
age(2)=age(1)+2=12;
....依此类推
或者,我没看懂你的问题?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-19 19:05:59 | 显示全部楼层
age(5)  age(4)+2    age(3)+2  age(2)+2   age(1)+2
n=1 时c=10;
分别是 12    14   16   18  
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-10-19 19:26:52 | 显示全部楼层

谢谢,这回我看懂了,知道什么意思了!




小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-11-8 23:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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