有人可以解释这个递归函数吗?

时间:2017-10-07 19:46:12

标签: python python-3.x function recursion

我已经做了一个递归函数来找到斐波纳契数列位置的数字。用户输入一个数字(术语),并通过该函数运行数字以查找数字。

>>> {k: int(v) if isinstance(v, float) else v for k, v in d.items()}
{'key2': 200, 'key4': 2017, 'key1': 'something', 'key3': 'another string'}

如果我输入' 4',有人可以解释这个数字是如何通过我的递归函数运行的吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

通过if语句:

fib(0) = 0

fib(1) = 1

fib(2) = fib(2-1) + fib(2-2)
       = fib(1)   + fib(0)
       = 1        + 0
       = 1

fib(3) = fib(3-1)            + fib(3-2)
       = fib(2)              + fib(1)
       = fib(2-1) + fib(2-2) + 1
       = fib(1)   + fib(0)   + 1
       = 1        + 0        + 1
       = 2

fib(4) = fib(4-1)                       + fib(4-2)
       = fib(3)                         + fib(2)
       = fib(3-1)            + fib(3-2) + fib(2-1) + fib(2-2)
       = fib(2)              + fib(1)   + fib(1)   + fib(0)
       = fib(2-1) + fib(2-2) + 1        + 1        + 0
       = fib(1)   + fib(0)   + 1        + 1        + 0
       = 1        + 0        + 1        + 1        + 0
       = 3