c++编写用递归方法计算Fibonacci序列的 前20项函数,并编写主函数调用该函数。

c++编写用递归方法计算Fibonacci序列的 前20项函数,并编写主函数调用该函数。,第1张

#include<iostream>

using namespace std;

int fib(int n)

{

if(n==0||n==1) return 1;

return

fib(n-1)+fib(n-2);

}

void main()

{ int h;

cout<<"请输入一个正整数:"<<endl;

cin>>h;

cout<<fib(h)<<endl;

getchar();

}

#include<stdioh>

int fib(int a);

main()

{

int n;

scanf("%d",&n);

fib(n);

}

int fib(int a)

{

int b[100];

int i;

b[0]=1;

b[1]=1;

for(i=2;i<=a-1;i++)

b[i]=b[i-1]+b[i-2];

for(i=0;i<=a;i++)

printf("%d\t",b[a]);

if((i%4)==0)

printf("\n");

return b[a];

}

斐波那契数列

#include<iostreamh>

void fibonacci(int); //声明斐波那契函数

void main()

{

int a;

cout<<"请输入要求前几项:"; //输入条件

cin>>a;

fibonacci(a); //调用函数

}

void fibonacci(int a) //定义函数

{

int fab1=1,fab2=1,fabn,m,n;

m=a;

cout<<fab1<<"\t"<<fab2<<"\t";

for(n=3;n<=m;n++)

{

fabn=fab1+fab2;

fab1=fab2;

fab2=fabn; //递归计算斐波那契数列数列下一项

cout<<fabn<<"\t";

}

cout<<endl;

}

1、程序调用自身的编程技巧称为递归。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

2、递归一般的作用用于解决三类问题:

(1)数据的定义是按递归定义的。(Fibonacci函数)

(2)问题解法按递归算法实现。

这类问题虽则本身没有明显的递归结构,但用递归求解比迭代求解更简单,如Hanoi问题。

(3)数据的结构形式是按递归定义的。

斐波那契数列:

F1 = F2=1

Fn = Fn − 1 + Fn − 2

所以用递归可以得出结果:

int Fibonacci(int n)//得出斐波那契数列第n项的值。

{

if(n==1 || n==2)

return 1;

return Fibonacci(n-1)+Fibonacci(n-2);

}

完整:

#include "stdioh"

int Fibonacci(int n)//得出斐波那契数列第n项的值。

{

if(n==1 || n==2)

return 1;

return Fibonacci(n-1)+Fibonacci(n-2);

}

int main()

{

int n;

scanf("%d",&n);

printf("%d\n",Fibonacci(n));

}

斐波那契数列(1,1,2,3,5,8,)

用函数表示为f(n)=f(n-1)+f(n-2) (n>2,f(1)=1,f(2)=1)

/// <summary>

/// Use less variables to implement Fibonacci

/// </summary>

/// <param name="n"></param>

/// <returns></returns>

static int Fn2(int n)

{

if (n <= 0)

{

throw new ArgumentOutOfRangeException();

}

int a = 1;

int b = 1;

for (int i = 3; i <= n; i++)

{

b = checked(a + b); // when n>46 memory will overflow

a = b - a;

}

return b;

}

#include<stdioh>

int main()

{

 int a[20],sum=3;

 a[0]=1;

 a[1]=2;

 

 for(int i=2;i<20;i++)

 {

  a[i]=a[i-1]+a[i-2];

   printf("Fibonacci=%d\n",a[i]);

 }

 return 0;

}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/12182303.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存