快捷搜索:  汽车  科技

c语言求斐波那契数列前30项:全面整理cc斐波那契函数

c语言求斐波那契数列前30项:全面整理cc斐波那契函数*完成日期:2018/07/30*作 者:明眸那么C语言是怎么实现斐波那契函的迭代求法的呢?我们闲话少叙上代码:/**文件名称:main.c

代码很有爱,文末有彩蛋哦!

c语言求斐波那契数列前30项:全面整理cc斐波那契函数(1)

c语言:

斐波那契函数第一波:迭代

首先解释一波迭代,迭代也称辗转法,是通过已知变量值回带得到新的值,再将新值回带,不断往复,达到迭代终止条件结束,分为准确迭代和近似迭代,近似迭代在数学领域应用较为广泛,牛顿迭代 插值定理,在此就不列举了(百度文库:是一种不断用变量的旧值递推新值的过程 跟迭代法相对应的是直接法(或者称为一次解法))

那么C语言是怎么实现斐波那契函的迭代求法的呢?我们闲话少叙上代码:

/*

*文件名称:main.c

*作 者:明眸

*完成日期:2018/07/30

*问题描述:使用迭代求斐波那契数列的第三十个数

*程序输出:

*/

#include <stdio.h>

int Fibonacci(int n)

{

if (n == 1 || n == 2) // n满足条件,递归结束

return 1;

else

return Fibonacci(n - 1) Fibonacci(n - 2); // 如果是求其它项,先要求出它前面两项,然后做和。非

}

int main()

{

int n=30;

printf("Result: %d\n" Fibonacci(n));

return 0;

}

运行结果,上图:

c语言求斐波那契数列前30项:全面整理cc斐波那契函数(2)

是不是有一些不太好懂呢?可以加我 企 。鹅 四九八。八七一,一五六为你解答哦!那么我们再来一波循环实现的吧!

上代码:

#include<stdio.h>

#include<stdlib.h>

int main()

{

int a1 a2 n;

a1 = a2 = 1;

n = 0;

printf("斐波那契数列的初值为:\n");

printf("a1=%d\ta2=%d\t\n" a1 a2);

//求斐波那契数列f3-f40的值

for (int i = 3; i <= 30; i)

{

n = a1 a2;

printf("a%d=%d\t" i n);

if (i % 5 == 0)

printf("\n");

a1 = a2;

a2 = n;

}

return 0;

}

这个可是每个数都有的哦!上结果:

c语言求斐波那契数列前30项:全面整理cc斐波那契函数(3)

c语言既然能实现,c 同样可以的,上代码:

#include <iostream>

#include <stdio.h>

using namespace std;

class Fibonacci

{

public:

int Fib1(int n)

{

if (n == 0)

return 0;

if (n == 1)

return 1;

if (n > 1)

return Fib1(n - 1) Fib1(n - 2);

}

long long Fib2(long long n)

{

int result[2] = { 0 1 };

if (n < 2)

return result[n];

int i = 1;

int fib1 = 0 fib2 = 1 fib = 0;

while (i < n)

{

fib = fib1 fib2;

fib1 = fib2;

fib2 = fib;

i ;

}

return fib;

}

};

int main()

{

Fibonacci sol;

cout << "迭代实现: " << sol.Fib1(30) << endl;

cout << "循环实现: " << sol.Fib2(30) << endl;

system("PAUSE");

return 0;

}

运行结果:

c语言求斐波那契数列前30项:全面整理cc斐波那契函数(4)

彩蛋来啦!

假设一个兔子养殖场的兔子不会死亡,繁殖规律是这样的:一只兔子生长期是两个个月,第三个月开始每个月生一只兔子,小兔子同样是第三个月开始生殖,一个进入生殖期的兔子每个月只生殖一只兔子,问:养殖场原本只有一只兔子,一年后有多少只兔子,N年后有多少只兔子?

怎么用代码实现呢?可以文末评论,也可以加我企鹅四九八。八七一,一五六寻求答案!

更多更好玩的代码尽在明眸学C,你的关注是小编最大的动力

猜您喜欢: