algorithm - 无法打印变量的最终值

  显示原文与译文双语对照的内容
55 5

我是 python的新员工,我正在试图在我的斐波特递归版本中写入 recAdd的最终值。 这是我的代码:


recAdd=0
def fibonacciRecursive(n):
 global recAdd
 if n==1 or n==0: 
 return n
 else:
 recAdd=recAdd+1
 return fibonacciRecursive(n-1)+fibonacciRecursive(n-2)
 print(recAdd)

在我调用我的函数之后,它只返回斐波特值,而不是 recAdd. I 想要打印两个。 我应该如何打印 recAdd 值?

时间: 原作者:

109 2

你需要 dedent print 并在调用函数后放置它


def fibonacciRecursive(n):
 global recAdd
 if n == 1 or n == 0: 
 return n # <-- should this be return 1?
 else:
 recAdd = recAdd + 1
 return fibonacciRecursive(n - 1) + fibonacciRecursive(n - 2)

recAdd = 0
fibonacciRecursive(5)
print(recAdd)

你可以把这个封装在包装里


def fib_aux(n):
 global recAdd
 recAdd = 0
 fibonacciRecursive(5)
 print(recAdd)

那就打电话

 
fib_aux(5)

 

把逻辑隐藏在函数中是很困难的。 这是唯一的方法


def fibonacciRecursive(n, print_recAdd=True):
 global recAdd
 if n == 1 or n == 0: 
 retval = n # <-- should this be 1?
 else:
 recAdd = recAdd + 1
 retval = fibonacciRecursive(n - 1, False) + fibonacciRecursive(n - 2, False)
 if print_recAdd:
 print recAdd
 return retval

原作者:
...