c语言求斐波那契数列前30项:全面整理cc斐波那契函数
c语言求斐波那契数列前30项:全面整理cc斐波那契函数*完成日期:2018/07/30*作 者:明眸那么C语言是怎么实现斐波那契函的迭代求法的呢?我们闲话少叙上代码:/**文件名称:main.c
代码很有爱,文末有彩蛋哦!
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;
}
运行结果,上图:
是不是有一些不太好懂呢?可以加我 企 。鹅 四九八。八七一,一五六为你解答哦!那么我们再来一波循环实现的吧!
上代码:
#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语言既然能实现,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;
}
运行结果:
彩蛋来啦!
假设一个兔子养殖场的兔子不会死亡,繁殖规律是这样的:一只兔子生长期是两个个月,第三个月开始每个月生一只兔子,小兔子同样是第三个月开始生殖,一个进入生殖期的兔子每个月只生殖一只兔子,问:养殖场原本只有一只兔子,一年后有多少只兔子,N年后有多少只兔子?
怎么用代码实现呢?可以文末评论,也可以加我企鹅四九八。八七一,一五六寻求答案!
更多更好玩的代码尽在明眸学C,你的关注是小编最大的动力