免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3159 | 回复: 10
打印 上一主题 下一主题

[C] C语言递归求高手解释下,谢谢,急啊。 [复制链接]

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-05-18 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-02-17 20:49 |只看该作者 |倒序浏览
#include <stdio.h>
int age (int n)
{
    int c;
    if (n==1)
        c=10;
    else
        c=age (n-1)+2;
    return c;          //主要这段的递推不解啊
}
int main ()
{
    printf ("%d\n",age(5));
    return 0;
}
里面的递归调用直到c=10,我明白,就是return c返回到主调函数age(n-1)即c=10+2=12,然后又没什么限制return c又返回到 age(n-1)得到14 为什么最后又返回到主函数,这里面可没有判断语句啊,就是递推的过程,最后n怎么又自增到5而且不再自增。。。,不解啊。

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
2 [报告]
发表于 2016-02-17 21:34 |只看该作者
这递归很简单,可是你的文字很难懂

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
3 [报告]
发表于 2016-02-17 21:37 |只看该作者
回复 2# hellioncu


#_#

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-05-18 06:20:00
4 [报告]
发表于 2016-02-17 22:00 |只看该作者
确实描述的不清楚,大神你能把return c=10后面的过程详细讲下吗?回复 3# fender0107401


   

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
5 [报告]
发表于 2016-02-17 22:01 |只看该作者
回复 4# ly3255148

你自己单步调试一下。


   

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-05-18 06:20:00
6 [报告]
发表于 2016-02-17 22:20 |只看该作者
调试了,过程都看到了,就是return c=10是不是返回到c=age(n-1)+2中的age(n-1)这里,  一般return返回到主调函数中,现在age(n-1)结束调用,所以return返回到这个函数是吗,先一步一步来。。。

论坛徽章:
0
7 [报告]
发表于 2016-02-19 11:24 |只看该作者
你在递归里面添加打印语句,你就会明白了

论坛徽章:
0
8 [报告]
发表于 2016-02-19 11:58 |只看该作者
你好像有理解错的地方,你一步一步看就会明白了
比如 一开始  n=5
这时
else
        c=age (n-1)+2;
  return c;          //主要这段的递推不解啊
这里要注意 不会立刻执行   return c; 的
因为又递归回去了,直到运行到了   if (n==1) 这时才会出现第一次 return

论坛徽章:
1
技术图书徽章
日期:2014-03-06 15:32:30
9 [报告]
发表于 2016-02-25 13:12 |只看该作者


文艺青年去做房产销售,二逼青年来买房子,
问:
我要买这栋楼五层这个户型的,多少钱一平?
文艺青年回答: 比下面一层贵50.
问:4层多少钱?
文艺青年回答: 比下面一层贵50.
问:3层多少钱?
文艺青年回答: 比下面一层贵50.
问:2层多少钱?
文艺青年回答: 比下面一层贵50.
问:1层多少钱?
答:8000一平。
于是二逼青年算出来二层一平米8050.
于是二逼青年算出来三层一平米8100.
于是二逼青年算出来四层一平米8150.
于是二逼青年算出来五层一平米8200.

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
10 [报告]
发表于 2016-02-25 14:00 |只看该作者
selfrun 发表于 2016-02-25 13:12
文艺青年去做房产销售,二逼青年来买房子,
问:
我要买这栋楼五层这个户型的,多少钱一平?


好强大啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP