有人可以解释这个递归函数吗? [关闭]

Posted

技术标签:

【中文标题】有人可以解释这个递归函数吗? [关闭]【英文标题】:Could someone explain this recursive function? [closed] 【发布时间】:2018-03-19 08:43:41 【问题描述】:

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

def fib(number):

if number == 0:
    return 0
if number == 1:
    return 1
else:
    number = fib(number - 1) + fib(number - 2)
    return number

user = int(input("Enter a position in the fibonacci sequence: "))

print fib(user)

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

谢谢。

【问题讨论】:

pythontutor.com 所以……你不了解自己的程序? 还有格式问题。 要了解递归,您必须了解函数的工作原理,要了解函数,您必须了解内存(堆栈,堆)的工作原理,然后您才能了解递归。阅读这篇文章:cryptroix.com/2016/10/10/understanding-multiple-recursion 四个不是 fib 序列:0, 1, 1, 2, 3, 5, 8, 13, 21 - 所以垃圾输入 - 垃圾输出适用 【参考方案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

【讨论】:

以上是关于有人可以解释这个递归函数吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

let函数内部的递归

使用 main 函数进行递归

简单的递归函数误解[关闭]

递归函数 - 不断返回 0?

递归函数:有人能解释一下这段代码是如何打印 1 到 5 的吗?

UE4定义递归函数