本文由浅入深介绍递归,分为初中高级分别对待面试情形
定义递归
如果方法自己调用自己就是递归
初级题
第一题:阶乘
n!=1 * 2 * … * n
def factorial(n):
if n == 1:
return n
else:
return n * factorial(n-1)
第二题:斐波那契数列
each number is the sum of the two preceding ones, starting from 0 and 1
def fib(n):
if n <=1:
return n
else:
return fib(n-1) + fib(n-2)
第三题:爬楼梯
一次只能爬一个或者两个台阶,那么爬到n级台阶有多少种爬法?
def func(n):
if n <= 2:
return n
else:
return func(n-1) + func(n-2)