檢查下面的代碼:遞歸深度(Python)的
>>> def fib(x):
... if x == 0 or x == 1:
... return 1
... else:
... return fib(x-1) + fib(x-2)
>>> print(fib(4))
根據在SoloLearn Python的教程(遞歸)的意見,代碼是這樣的:
1. fib(4) = fib(3) + fib(2)
2. = (fib(2) + fib(1)) + (fib(1) + fib(0))
3. = fib(1) + fib(0) + fib(1) + fib(1) + fib(0)
4. = 1+ 1 + 1 + 1 + 1
5. = 5
線後2,只有fib(2)
應該去掉fib()
函數的else部分,對吧? 這兩個fib(1)
和單個fib(0)
符合fib()
函數的if部分的標準。所以返回1。我的問題是,爲什麼在第三行中,fib(1) + fib(0) + fib(1) + fib(1) + fib(0)
全部被1代替,然後添加?
請原諒我問這樣一個noob問題。
因爲所有這些電話的解析爲第一條。 –