每一次划分问题使规模变小,如同一颗子弹压进弹夹,就是入栈。每一次返回,如同扣动扳机使子弹发射,上一颗被压进的子弹距离撞针又近了一步,就是出栈,即被划分的规模较小问题的上一层规模较大问题被传入参数进行计算,由此循环实现从下到上的返回结果。最终最后一颗子弹被发射,即得到规模最大的问题的解
def multi_till_1(num):#递归实现阶乘
if num==1:
return 1
multi=num*multi_till_1(num-1)#存放乘积
return multi
def fibo(n):#经典的斐波那契数列
if n==1:
return 0
if n==2:
return 1
fn=fibo(n-1)+fibo(n-2)
return fn
事实上,只要设置好终止条件以及终止条件中涉及到的变量的操作,就可以较好的完成递归。从而将规模较大的问题分解为规模较小的子问题求解,前提是已知规模最小子问题的解并且能正确划分