以上的递归函数相当于:
def fact(n):
if n==1:
return 1
else:
return n*fact(n-1)
fact(1)
首先我们要了解一下什么是递归.
递归法,递归法就是利用上一个或者上几个状态来求取当前状态的值(个人看法).也可以说成函数自己调用自己的一种解决问题的策略.所以呢递归法通常是依托函数来实现的,递归函数总是会有一个出口,我们在解决递归问题时,只需要找出递归的关系式以及递归函数的出口(这两个可以说是递归函数的核心了).下面我将今天这一节举求斐波那契值的例子带领着大家具体的实践一下递归法.
递归函数的出口是当n为1时返回1,当n为0时返回0.
最后递归函数的核心代码就可以写出了:
然后总的代码就是:
具体思路如下:
因为只有第1个和第0个斐波那契值是确定的
例:
会执行第二条语句返回1值.
def?Sum(m):
#函数返回两个值:递归次数,所求的值
if?m==1:return?1,m
return?1+Sum(m-1)[0],m+Sum(m-1)[1]
cishu=Sum(10)[0]?
print?cishu
def Sum(m,n=1):
... if m==1:return n,m
... return n,m+Sum(m-1,n+1)[1]
print Sum(10)[0]