Python3&数据结构之递归

#递归
def fact(x):
    if x == 1:
        return 1
    else:
        return  x * fact(x - 1)

#tail recursion(尾递归)
def tail_recusion(x,total=1):
    if x == 1:
        return total
    else:
        return tail_recusion(x-1,total*x)

print(fact(5))
print(tail_recusion(5))

以上是递归和尾递归的代码。

在学习递归的同时要了解栈(stack)这种数据结构。

stack只有两种操作:压入(插入)和弹出(删除和读取)。

注:Python对递归的次数有限制,当递归深度超过1000时,会抛出异常:

RecursionError: maximum recursion depth exceeded in comparison

用递归写Fibonacci:Fibonacci数列为:0、1、1、2、3、5、8、13、21......

用递归的方法来定义:

  • f(0) = 0 
  • f(1) = 1
  • f(n) = f(n-1) + f(n-2) , n>=2
#fibonacci
x = int(input("input a number:"))
def fibonacci(n):
    if n == 0:
        return 0
    if n == 1:
        return 1
    else:
        return fibonacci(n-1) + fibonacci(n-2)

for i in range(x):
    print(fibonacci(i))


 

猜你喜欢

转载自blog.csdn.net/qq_38575545/article/details/84646097
今日推荐