标题:请帮我看一下这个递归,怎么不能这样调用?
取消只看楼主
defhvk
Rank: 2
等 级:论坛游民
帖 子:62
专家分:29
注 册:2011-4-8
结帖率:93.33%
已结贴  问题点数:8 回复次数:2 
请帮我看一下这个递归,怎么不能这样调用?
#include<stdio.h>
int x(int );
main()
{
   int a=1;
   printf("%d",x(a));
}

int x(int a)
{
   static int b=0;
   b++;
   x((a+1)*2);
   if (b==9)
       return x((a+1)*2);
}


1>------ 已启动生成: 项目: hg, 配置: Debug Win32 ------
1>正在编译...
1>29.c
1>f:\程序文件\hg\hg\29.c(16) : warning C4717: “x”: 如递归所有控件路径,函数将导致运行时堆栈溢出
1>f:\程序文件\hg\hg\29.c(16) : warning C4715: “x”: 不是所有的控件路径都返回值
1>生成日志保存在“file://f:\程序文件\hg\hg\Debug\BuildLog.htm”
1>hg - 0 个错误,2 个警告
========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========
搜索更多相关主题的帖子: return 日志 
2011-04-13 15:38
defhvk
Rank: 2
等 级:论坛游民
帖 子:62
专家分:29
注 册:2011-4-8
得分:0 
就是昨天猴子摘桃子功能。猴子第一天摘了若干个桃子,当即吃了一半加一个,以后每天吃掉剩下的一半加一个,第10天时桃子只有一个了,问猴子第一天摘了多少个桃子?
我最想知道我上面那个程序为什么不能实现?请作详细解释一下?
2011-04-13 15:48
defhvk
Rank: 2
等 级:论坛游民
帖 子:62
专家分:29
注 册:2011-4-8
得分:0 
可以用for写出来,但我最想问的是,上面那个递归为什么会那样提示?请高手指点???????
#include<stdio.h>
main()
{
  int a=1,b;
   for (b=1;b<=9;b++)
   a=(a+1)*2;
   printf("%d",a);
}
这样就OK!
2011-04-13 16:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-336534-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025853 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved