斐波那契的N个数字的总和

时间:2018-09-24 21:16:02

标签: python python-3.x jupyter-notebook fibonacci

我正在尝试在斐波那契实现N个整数的总和

def fibo(n):
    if n<2:
        return 1
    else:
        res = fibo(n-1) + fibo(n-2)
        sum = sum + res
        return res, sum

n=7
sum = 0
for i in range(1, n):
    print(fibo(i))

print("Suma", sum)

#example: if n=7 then print : 1,1,2,3,5,8,13 and sum is 32

我遇到的错误是,当我放sum = sum + res时 不打印并运行程序

当前,您如何实现总金额?

7 个答案:

答案 0 :(得分:1)

您只需要在for循环中而不是在fibo(n)中计算总和。 看一下:

def fibo(n):
if n<2:
    return 1
else:
    res = fibo(n-1) + fibo(n-2)
    return res

n=7
sum = 0
for i in range(0, n):
    r = fibo(i)
    sum += r
    print(r)

print("Suma", sum)

我用r来在每个循环中调用一次fibo。

答案 1 :(得分:1)

让我首先指出,斐波那契序列的前 7 个项的总和不是 32 。该金额为 33 。现在解决问题。这是我解决问题的方法。我将首先定义如下函数来计算斐波那契数列的第 n 个项:

def fibo(n):
    if n in [1,2]:
        return 1
    else:
        res = fibo(n-1) + fibo(n-2)
    return res

然后,我将定义一个函数,如下所述计算斐波那契数列的前 n 个项的总和。

def sum_fibo(n):
    res = [fibo(i) for i in range(1, n+1)]
    print(res)
    return sum(res)

所以,如果我这样做

[In] sum_fibo(7)

我知道

        [1, 1, 2, 3, 5, 8, 13]
out >>> 33

注意:在定义上述函数时,我假设尽管斐波那契可扩展为涵盖所有实数和复数,但该函数的输入将始终为正整数在this wiki page上。

答案 2 :(得分:0)

对您的代码进行了一些修改:

select concat(nr1, '-', format( cast ( q2.nr2 as int ), '00')) as result
  from
 (
  select substring(q1.str,1,charindex('-',q1.str,1)-1) as nr1,
         substring(q1.str,charindex('-',q1.str,1)+1,len(q1.str)) as nr2
    from
    (
     select '3254-1'  as str union all
     select '3254-25' as str union all
     select '3254-6'  as str    
     ) q1
) q2;

 result
 ------
 3254-01
 3254-25
 3254-06

答案 3 :(得分:0)

首先,行sum = sum + res毫无意义,因为您从未从头定义sum

所以,您的函数应该看起来像

def fibo(n):
    if n<2:
        return 1
    else:
        return fibo(n-1) + fibo(n-2)

第二,您可以简单地获得总和

sum_ = 0
for i in range(0, n):
    sum_ += fibo(i)

或者也许

sum_ = sum(fibo(i) for i in range(0, n))

请注意,只有当您未覆盖名为sum的内置函数

时,后者才有效

答案 4 :(得分:0)

您要在分配前引用变量总和。

您可能要在for循环中使用变量sum并将fibo分配给它。

    def fibo(n):
        if n<2:
            return 1
         else:
            return fibo(n-1) + fibo(n-2)


n=7
sum = 0
for i in range(1, n):
    sum +=  fibo(i)
    print(fibo(i))

print("suma", sum)

答案 5 :(得分:0)

实际上,我不认为复杂的斐波那契数列在很多方面都非常有趣,例如,如果您想将第7个斐波那契数相加,则检查了第9个斐波那契数-1是吗现在我们如何找到第n个斐波那契数?

p = (1+5**.5)/2
q = (1-5**.5)/2
def fibo(n):
    return 1/5**.5*(p**n-q**n)

现在我们可以一次计算找到任意数量的和!例如7

fibo(9)- 1

输出

33

以及实际答案是什么

1+1+2+3+5+8+13=33

summary summarum:序列后面两位的斐波那契数减1,是直到该数为止的斐波那契数之和

答案 6 :(得分:0)

def sumOfNFibonacciNumbers(n):

# Write your code here
i = 1
sum = 2
fib_list = [0, 1, 1]
if n == 1:
    return 0
if n == 2:
    return 1
if n == 3:
    return 2
for x in range(1,n-2):
    m = fib_list[-1] + fib_list[-2]
    fib_list.append(m)
    sum = sum + m
return sum

结果= sumOfNFibonacciNumbers(10) 打印(结果)