我有点卡在这里。我知道可以递归地找到特定的斐波那契数:
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语法的能力,而不是编写递归函数)
答案 0 :(得分:4)
由于没有其他人在回答您的问题,所以请转到:
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;
}
答案 1 :(得分:3)
如果你想要一个只涉及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;
}
答案 2 :(得分:3)
观察到fib_sum(n)== fib(n + 2) - 1你可以使用或多或少相同的函数。