我无法打印变量的最终值

2024-09-30 12:24:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,我正在fibonacci递归版本中尝试recAdd的write-to-final值。这是我的密码:

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。我想打印这两个值。我应该如何打印recAdd值?你知道吗


Tags: orto版本密码returnifdefglobal
1条回答
网友
1楼 · 发布于 2024-09-30 12:24:01

您需要删除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

相关问题 更多 >

    热门问题