簡體   English   中英

Python中的函數意外退出For循環

[英]Function Break Out of For Loop Unexpectedly in Python

關於Python,我仍然是一個初學者。 我最近嘗試了有關斐波那契數的第二項目Euler問題,但不幸的是我被困住了。 在簡單的for循環中,不少。 在此for循環中,我嘗試將函數的返回結果分配給變量,並且無論所述變量是否與條件匹配,總和都會增加。 但是,此循環在退出之前僅運行一次,我感到非常困惑。 我精疲力盡; 如果您能幫助解決此問題,我將不勝感激。 以下是我的代碼的相關部分:

def fibonacci(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        x = n - 1
        y = n - 2
        return x + y

num = input("Input your number of choice: ")
total = 0

問題領域:

for i in range(int(num)):
    val = fibonacci(i)
    if (val % 2 == 0):
        total = total + val

print(total)

是的,它只會計算一次total = total + val ,當val = 0 ,對於所有其他情況,您的fibonacci函數將返回2*n -3 ,這始終是奇數,但是您正在檢查返回的val是否為even (除了when)之外,它永遠不會消失,因此是問題。

也許您想返回類似-

return fibonacci(x) + fibonacci(y) # or the simpler , fibonacci(n-1) + fibonacci(n-2)

注意, 斐波納契數的序列Fn由遞歸關系F_n = F_{n-1} + F_{n-2}

選項1:使用遞歸

代替return (n-1) + (n-2) ,應該return fibonacci(n-1) + fibonacci(n-2)

def fibonacci(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        x = fibonacci(n-1)
        y = fibonacci(n-2)
        return x + y

num = input("Input your number of choice: ")

print(fibonacci(num))

這是一個例子:

$ python fibonacci.py
Input your number of choice: 11
89

選項2:使用循環

def fibonacci(num):
 a,b = 1,1
 for i in range(num-1):
  a,b = b,a+b
 return a

print fibonacci(num)

我看到的問題是您正在嘗試打印在for循環中分配的變量。 相反,您可以...

for i in range(int(num)):
     val = fibonacci(i)
     if (val % 2 == 0):
         return (total + val)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM