用C语言函数的递归调用实现求数列1,1,2,3,5,8……..前30项之和。

如题所述

递归函数如下:
首先斐波拉楔数列的前n项和递推公式为S(n)=S(n-1)+S(n-2)+1;
(根据通项公式a[n]=a[n-1]+a[n-2]很容易推导出来)
递归函数如下所示;
int sum_Fibonacci(int n)
{
if(1 == n)
return 1;
else if(2 == n)
rerurn 2;
else
return sum_Fibonacci(n-1)+sum_Fibonacci(n-2)+1;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-10
#include <stdio.h>
int getNumber(int order){
if(1 == order || 2 == order){
return 1;
}
return getNumber(order - 1) + getNumber(order - 2);
}
long int getSum(int order){
if(order == 1){
return 1L;
}
return getNumber(order) + getSum(order -1);
}
int main(){
printf("The sum is : %lu\n", getSum(30));
return 0;
}
第2个回答  2012-05-10
代码如下:
#include <stdio.h>

int acculate(int n)
{
if(n==1)
return 1;
else if(n==2)
return 2;
else if(n==3)
return 4;
else
return 2*acculate(n-1)-acculate(n-3);
}

void main()
{
int n,sum;
n=30;
sum=acculate(n);
printf("%d\n",sum);
}
相似回答