[英]Finding sum of fibonacci numbers recursively
我有点卡在这里。 我知道可以递归地找到一个特定的斐波那契数:
int fib (int n)
{
if (n <= 1)
return n;
else
return fib(n-1) + fib(n-2);
}
而且我知道迭代地我可以调用该函数 n 次来找到斐波那契数的总和
int sum = 0;
for (int i = 0; i < n; i++)
{
sum += fib(i);
}
但是我很难想出一个递归函数来找到总和。 我认为它与原始的斐波那契函数没有太大不同。 (这是一项旨在提高我编写 ocaml 语法的能力的作业,而不是编写递归函数)
由于没有其他人愿意回答您的问题,因此您可以:
int fib_sum(int n)
{
if (n == 0)
return 0;
if (n == 1)
return 1;
return fib_sum(n-1) + fib_sum(n-2) + 1;
}
如果你想要一个只涉及 fib_sum() 的递归解决方案,这里有一个:
int fib_sum (int n)
{
if (n == 0)
return 1;
if (n == 1)
return 2;
return fib_sum(n-1) + fib_sum(n - 2) + 1;
}
观察到 fib_sum(n) == fib(n+2) - 1 您可以使用或多或少相同的功能。
我想这会很好用
int fib_sum (int n){ if(n<=1) { return n; } else { return fib_Sum(n-1) + fib_Sum(n-2) + 1; } }
请记住,元素的计数从 0 开始,因此元素 0 1 1 2 3 5 8 13 然后位置 0 1 2 3 4 5 6 7 所以如果 n = 5,则总和 = (0+1+1+2+3+ 5)=12
递归函数将是: int fib_sum (int n){ if(n<=1) { return n; } else { return fib_Sum(n-1) + fib_Sum(n-2) + 1; } }
int fib_sum (int n){ if(n<=1) { return n; } else { return fib_Sum(n-1) + fib_Sum(n-2) + 1; } }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.