递归理解

红色预警:递归有风险,用到需谨慎(递归一定一定一定需要有出口(结束的地方))

步骤:

1.需要事先特别熟悉一个递归算法(我选阶乘)

2.掌握一种工具的调试。(我用VC6.0)

算法:

算法:给一个数N,要求N *(N-1)* ... * 1。

算法分析:显然,每次只要改变参数就好了。

 

熟悉VC6.0的调试:

这里会给出调试一些步骤,无意深究工具的调试,其他靠想:

建议先写个小例子,非递归,练练调试,然后写这个算法,调试。

调试简单操作:

一,认识调试功能

  在组建(构建)菜单中,点击开始调试(启动调试),在其下级子菜单中,包含了启动调试器运行的各项子命令(如图1所示)

 

 

第1,2,3步。

 

4是下断点的。断点就是程序从这里停。

代码:

#include <iostream.h>

 

//写一个要调用的递归程序

int jiecheng(int n);

int jiecheng(int n)

{

if(n <0)返回false;

if(n == 0)返回1;

如果(N> 0)

返回n * jiecheng(n-1);

}

 

//主程序中掉用递归程序

int main()

{

int n;

CIN >> N;

int answer = jiecheng(n);

cout <<“答案是:”<<答案<< endl;

}

或许不太美观,但不管这么多了。(反正功能是一样的,我就开始调试了)

调试:

这个就发不了图片了。

总结:

这里输入的Ñ为4。

它每次都进里面了,每次都是N> 0的那个,然后每次Ñ就减少了1,然后当这次Ñ为1进来的时候,正变成0了,然后Ñ再进来的时候,变成(0)= 1.1 *变成(0)= 1,2 *变成(1)= 2,3 *变成(2)= 6.4 *变成(3)= 24,返回到主函数中。

总的来说,好像是什么东西改变着进去了,进到头了,(递归的尽头),就又按着层层的顺序(与进去的顺序正好相反)出来了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值