递归的精髓:只要你能想到就能做到 :)。
递归需要:
1.base case
2.recursion step。一直简化到 base case。
递归是用自身证明自身。在数学证明中,如果base case正确,假设f(n)正确,如果能推出f(n + 1)也正确,则说明 f(n) 为真。
recursion step 就是 推出 f(n + 1) 正确的过程,是问题的简化。
eg1;证明 string 是否是 回文。
def isPalindrome(s):
def toChar(s):
s = s.lower()
s = s.strip(string.punctuation)
return s
def isPal(s):
if len(s) <= 1:
return True
else:
return s[0] == s[-1] and isPal(s[1:-1])
return isPal(toChar(s))
eg2:fib 函数
def fib(n):
if n == 0 or n == 1:
return 1
else:
return fib(n - 1) + fib(n - 2)