C语言编写斐波那契数列
2015-11-27 19:10
274 查看
/*
斐波那契数列:规定第一个是n1=0,第二个是n2=1,第三个是n1+n2,第四个是n2+n3,依次类推
*/
#include <stdio.h>
int fb(int x);
printf("输入一个数字");
int a;
scanf("%d",&a);
for (int i=1; i<=a; i++) {
printf("%d ",fb(i));
}
//递归:使用递归,系统开销要比迭代大,所以尽量使用迭代解决问题。
int fb(int x){
if(x==1)
return 0;
if(x==2)
return 1;
else
return fb(x-1)+fb(x-2);//x前面的一项加x前面前面的一项
}
//迭代
//int fb(int x){
// int prevlous1=0;//前面的前面的数字
// int prevlous2=1;//前面的数字
// int current=0;//当前位置数字
// if (x==1) { //斐波那契数列规定第一个为0
// return 0;
// }
// if (x==2) { //斐波那契数列规定第一个为1
// return 1;
// }
// int i=2; //用来计数
//下面是用来计算位置为3以及以后位置的数字
// while (i<x) {
// 从第三项开始每项都是前两项之和
// current = prevlous1 + prevlous2;
// prevlous1 = prevlous2;//将前面的前面赋值为前面的数字
// prevlous2 = current;//将前面的数字赋值为当前数字
// i++;//计数器增1以备下次使用
// }
// return current;
//}
斐波那契数列:规定第一个是n1=0,第二个是n2=1,第三个是n1+n2,第四个是n2+n3,依次类推
*/
#include <stdio.h>
int fb(int x);
printf("输入一个数字");
int a;
scanf("%d",&a);
for (int i=1; i<=a; i++) {
printf("%d ",fb(i));
}
//递归:使用递归,系统开销要比迭代大,所以尽量使用迭代解决问题。
int fb(int x){
if(x==1)
return 0;
if(x==2)
return 1;
else
return fb(x-1)+fb(x-2);//x前面的一项加x前面前面的一项
}
//迭代
//int fb(int x){
// int prevlous1=0;//前面的前面的数字
// int prevlous2=1;//前面的数字
// int current=0;//当前位置数字
// if (x==1) { //斐波那契数列规定第一个为0
// return 0;
// }
// if (x==2) { //斐波那契数列规定第一个为1
// return 1;
// }
// int i=2; //用来计数
//下面是用来计算位置为3以及以后位置的数字
// while (i<x) {
// 从第三项开始每项都是前两项之和
// current = prevlous1 + prevlous2;
// prevlous1 = prevlous2;//将前面的前面赋值为前面的数字
// prevlous2 = current;//将前面的数字赋值为当前数字
// i++;//计数器增1以备下次使用
// }
// return current;
//}
相关文章推荐
- C语言左值和右值,以及操作符属性总结
- C++ 的this指针
- Android NDK学习之六、C++ 支持
- 二叉树的遍历(无头结点,C语言)——更新后
- c语言内存分配
- c语言递归函数
- c语言中exit的简单用法
- 突破select的FD_SETSIZE限制
- C++primer plus第六版课后编程练习答案7.10
- C语言_函数_例子
- C++primer plus第六版课后编程练习答案7.9
- C++primer plus第六版课后编程练习答案7.8
- C++类的构造函数、析构函数
- C++primer plus第六版课后编程练习答案7.7
- 区间调度问题 算法第六集
- 静态代码检测工具Cpplint
- C++别名传参和指针传参区别
- c++ primer 5 表达式
- c++11 packaged_task 用法,将任务打包
- C++primer plus第六版课后编程练习答案7.6