函数在Python中突然出现For循环

时间:2015-06-29 18:42:01

标签: python function

我还是Python的初学者。我最近尝试过关于斐波纳契数的第二个项目欧拉问题,不幸的是我被卡住了。在一个简单的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)

3 个答案:

答案 0 :(得分:1)

是的,它只会计算total = total + val一次,当val = 0时,对于所有其他情况,您的斐波那契函数返回的2*n -3总是奇数,但您正在检查是否返回的val是even(除了0时它永远不会出现),因此也就是问题。

也许您想要返回类似的内容 -

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

答案 1 :(得分:0)

请注意,Fibonacci numbers的序列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)

答案 2 :(得分:-1)

我看到的问题是您正在尝试打印在for循环中分配的变量。相反,你可以做......

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