社区
C语言
帖子详情
关于递归的
OpenOffice_org
2005-04-23 11:50:09
fun(int x)
{
if(x/2>0) fun(x/2);
printf("%d ",x);
}
main()
{ fun(6); }
这种函数的递归调用我看不懂,到底输出的X值为多秒?
请指教,谢谢
...全文
198
6
打赏
收藏
关于递归的
fun(int x) { if(x/2>0) fun(x/2); printf("%d ",x); } main() { fun(6); } 这种函数的递归调用我看不懂,到底输出的X值为多秒? 请指教,谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
llf_hust
2005-04-24
打赏
举报
回复
fun(int x)
{
if(x/2>0) fun(x/2);
printf("%d ",x);
}
main()
{ fun(6); }
这种函数的递归调用我看不懂,到底输出的X值为多秒?
1. 6/2 ====>3 >0
fun(3/2)====>1>0
fun(1/2)====> 不大于0
输出 1 3 6
blackmouth
2005-04-24
打赏
举报
回复
fun(int x)
{
if(x/2>0) fun(x/2);
printf("%d ",x);
}
main()
{ fun(6); }
整数除法中1/2=0,3/2=1
所以x的值在传递过程中为6 3 1
当x=1时x/2>0不成立,结束递归,打印x
nanr_1122
2005-04-24
打赏
举报
回复
我这有问题 请教~~~~~`
很简单的两个函数:
long ract(int n) // 阶乘问题( n!)
{
if(n<0)
{printf("异常");
exit(-1);
}
else if(n<=1)
return(1);
else
return( n*ract(n-1) );// 调用自己;
}//结束;
经典 hanoi 问题;
void hanoi ( int n, char a, char b ,char c)
{ if(n>0)
{
hanoi(n-1,a,c,b);
printf("\n move disc %d from pile %c to %c",n,a,b);
hanoi (n-1,c,b,a);
}
}// end
我想请教的是 拿到问题时, 我想从 问题的 n 用 n-1 来设计过程不是太难;
终结条件也可以考虑, 但是如果从整体的实现过程 来考虑 可就麻烦拉~
就是对函数的每一层保存,每一层调用, 从底部 的回传数据```````
就晕到这拉~~~ 我看到过曾经数据结构上说, 尽量不要模拟全部过程,只要将n-1问题想成肯定能完成就行,调用便行;
如上 要是 hanoi 问题 , 我就可以不想那么多, 因为不用从最后向上一层一层传数据,可是 第一个 阶乘 (n!) 问题, 我觉得我总 得 大体想想数据的回传过程, 要不老觉得不放心,~~~ 可这样老是觉得很困难~```
向各位请教 , 有没有什么好方法或经验, 可以较快较好的 解决, 有什么好的思路
望各位不吝赐教~~~~~~
nanr_1122
2005-04-24
打赏
举报
回复
aA
delhe
2005-04-24
打赏
举报
回复
第一题 输出结果为 1 3 6
第二题是 B没错,因为s加了c次,而循环后b == c+1 ,又有a == s, 所以s == a + c
OpenOffice_org
2005-04-23
打赏
举报
回复
(22)若有如下程序段,其中s、a、
0)
b、c均已定义为整型变量,且a、c均已赋值(c大于
s=a;
for(b=1;b<=c;b++) s=s+1;
则与上述程序段功能等价的赋值语句
是
A)s=a+b; B)s=a+c; C)s=s+c; D) s=b+c;
顺便请教一下,这道题应该选几?我选A为什么会错?题目给出的答案是B。为什么?
s的值应为s=a+(1+2+3...+c), 这样的话应该是答案A 呀,为什么会是B?
请指教,谢谢
递归
的基本原理
本文深入探讨了
递归
的基本概念及其实现技巧,通过具体示例解析
递归
的工作原理,并介绍了如何利用
递归
解决实际问题,包括二进制转换、全排列及八皇后问题。
教你领悟函数
递归
的本质
本文介绍了
递归
的基本概念,包括
递归
的定义、思想及必要条件,并通过实例讲解了
递归
的应用,对比了
递归
与迭代的不同场景适用性。
递归
详解——让你真正明白
递归
的含义
本文深入浅出地介绍了
递归
的概念,通过生动的故事和代码示例解释了
递归
的工作原理。
递归
的基本思想是函数调用自身,
递归
包含三个要素:明确功能、确定结束条件和找到等价关系式。虽然
递归
有优雅性和反向性等优点,但也可能导致栈溢出等缺点。适用
递归
的问题通常具有递推关系或
递归
数据结构。在使用
递归
时,要注意优化,如尾
递归
和记忆化。
递归
是一种强大的工具,但并非所有问题都适合用
递归
解决。
递归
的思路
本文深入浅出地介绍了
递归
的概念,包括方法
递归
的定义、适用场景及如何编写
递归
代码。
递归
主要应用于将大问题分解为相似子问题的情况,并需要明确终止条件。通过
递归
求解阶乘的例子,详细解释了如何确定终止条件并利用函数自身的调用来解决问题。总结指出,写出
递归
代码的关键在于明确终止条件和理解函数的语义。
递归
的三大要素
本文详细解析
递归
的三大核心要素:明确函数目的、确定
递归
终止条件及建立等价关系式。并通过实例如阶乘计算、斐波那契数列及链表反转等展示
递归
的应用与优化技巧。
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章