由一个例子引起的对递归原理的理解。

   今天由一个例子来对递归函数执行过程进行简要的剖析。

 

   递归,所用到的底层数据结构是栈。即遵循先进后出原则,保存、读取变量。

 

  如果我们想要运用递归,必须满足两个条件:

   1,确定初始条件。确定递归何时结束。

   2,该问题能够用分治思想,将大问题分解为小问题。

 

  每次,递归调用前,现将函数变量值压入栈;递归结束后,再将变量依次弹出。

 

下面是一个例子:

程序执行过程:

 

1.执行6-15行。

第一次入栈,num=4;

...

第五次,num=0;

DOS窗口打印:5  4  3  2  1 0

 

2.当num=0,执行8行。 if num==0,DOS窗口打印:1:0。注意,在返回之前,应先将栈销毁。

 

 

3.执行16-17行,依次将num弹出栈。

2:0

:::

______

______

2:4

:::

 

4.执行第18行,返回num=4。销毁num栈。

注意,如果没有第18行,这时候返回的是一个任意值。因为,在执行第17行后,num栈元素已经全部弹出,num此时变成一个任意值。

 

调试结果如下:

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值