急急急 计算Fibonacci数列前n项和,提示F(n)定义 F(n)=F(n-1)+F(n-2) 用c语言编程 急求
展开全部
#include "stdio.h"
int fibona(int n){
int a,b,i;
if(n==1 || n==2) return 1;
for(a=1,b=1,i=2;i<n;i++){
b+=a;
a=b-a;
}
return b;
}
void main(void){
int n,i,sum;
printf("Type an integer...\nn=");
scanf("%d",&n);
for(sum=0,i=1;i<=n;sum+=fibona(i++));
printf("The sum is %d.\n",sum);
}
int fibona(int n){
int a,b,i;
if(n==1 || n==2) return 1;
for(a=1,b=1,i=2;i<n;i++){
b+=a;
a=b-a;
}
return b;
}
void main(void){
int n,i,sum;
printf("Type an integer...\nn=");
scanf("%d",&n);
for(sum=0,i=1;i<=n;sum+=fibona(i++));
printf("The sum is %d.\n",sum);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主这个百度有很多的,在此借用一下夜游神小翠的程序:
#include<stdio.h>
#define N 20
int Fibonacci(int n)
{
if(n == 1 || n==2)
return 1;
else
return Fibonacci(n-1)+Fibonacci(n-2);
}
void main()
{
int i = 0;
for(i=1;i<=N;i++)
{
printf("%5d",Fibonacci(i));
if(i%5 == 0)
printf("\n");
}
printf("\n");
}
只要修改宏定义N的值,就可以输出斐波那契数列的前N项。
楼主有不会可以再问哦。
#include<stdio.h>
#define N 20
int Fibonacci(int n)
{
if(n == 1 || n==2)
return 1;
else
return Fibonacci(n-1)+Fibonacci(n-2);
}
void main()
{
int i = 0;
for(i=1;i<=N;i++)
{
printf("%5d",Fibonacci(i));
if(i%5 == 0)
printf("\n");
}
printf("\n");
}
只要修改宏定义N的值,就可以输出斐波那契数列的前N项。
楼主有不会可以再问哦。
追问
能把N改为输入scanf的么 帮个忙 给个完整的
追答
#include
int Fibonacci(int n)
{
if(n == 1 || n==2)
return 1;
else
return Fibonacci(n-1)+Fibonacci(n-2);
}
int main()
{
int i = 0;
int N;
printf("请输入要计算的Fibonacci个数:\n");
scanf("%d",&N);
for(i=1;i<=N;i++)
{
printf("%5d",Fibonacci(i));
if(i%5 == 0)
printf("\n");
}
printf("\n");
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
#include <math.h>
#define M sqrt(5)
int main (void)
{
long n;
scanf("%ld", &n);
long double m1=powl((1+M)/2,n), m2=powl((1-M)/2,n);
unsigned long long fn = (unsigned long long)((1/M)*(m1-m2));
if(n<=2){
fn=1;
printf("%llu", fn);
}
else{
printf("%llu",fn);
}
return 0;
}
#include <math.h>
#define M sqrt(5)
int main (void)
{
long n;
scanf("%ld", &n);
long double m1=powl((1+M)/2,n), m2=powl((1-M)/2,n);
unsigned long long fn = (unsigned long long)((1/M)*(m1-m2));
if(n<=2){
fn=1;
printf("%llu", fn);
}
else{
printf("%llu",fn);
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询