我正在尝试在斐波那契实现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
时
不打印并运行程序
当前,您如何实现总金额?
答案 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) 打印(结果)