有人可以解释这个递归函数吗? [关闭]
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
【讨论】:
以上是关于有人可以解释这个递归函数吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章