鱼C论坛

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

新人求教

[复制链接]
发表于 2016-12-5 22:16:16 | 显示全部楼层 |阅读模式

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

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

x
  1. #include <stdio.h>

  2. int fun(int n)
  3. {
  4.         int s;
  5.         if(n==1||n==2)
  6.         {
  7.                 s = 2;
  8.         }
  9.         else
  10.         {
  11.                 s = n-fun(n-1);
  12.         }
  13.         
  14.         return s;
  15. }
  16. main()
  17. {
  18.         printf("%d", fun(3));
  19. }
复制代码

这道题是什么意思
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-6 19:52:46 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-12-7 21:56:32 | 显示全部楼层
首先,程序定义了一个函数叫做“fun”,在fun函数内它又可以自己调用自己,形成了嵌套函数。
举个栗子,比如说,在main函数里要输出fun(3)的值,首先,主函数调用了子函数,现在进入了子函数里,目前n=3,n既不是1也不是2,所以s=3-fun(2),而fun(2)有调用到了fun函数,此时参数为2,满足n=2,所以此时s=2,返回s值,即fun(2)=s=2,再跳出到上一个算式,即此时s=3-fun(2)=3-2=1,返回s值,所以fun(3)=1。当n不等于3时,也是类似的,一层一层往里进,算到最后一个值时再一层一层往外出。
这种方法叫做递归法,可以百度一下扩展一下。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-10 22:58:51 | 显示全部楼层
Shiryan 发表于 2016-12-7 21:56
首先,程序定义了一个函数叫做“fun”,在fun函数内它又可以自己调用自己,形成了嵌套函数。
举个栗子,比 ...

可是这里从哪体现出fun=s呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-11 00:25:32 | 显示全部楼层
kljoij 发表于 2016-12-10 22:58
可是这里从哪体现出fun=s呢

你看这个函数刚开始定义的时候是有返回值的是个int类型的值,最后有这条语句 return s; 说明fun(n)=s的。
建议你先去弄明白函数那一章节的知识,这样应该就比较好理解了。
说明.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-5-16 18:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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