斐波那契数列
来源:互联网 发布:windows 8 apart from 编辑:程序博客网 时间:2024/06/05 02:37
《编程之美》学习实践,这里要会推导Fibonacci的封闭形式。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//1.按照斐波那契的定义容易用递归实现
int fibonacci( int n){
if(n <= 0){ //看具体数学说负数也有对应的 Fibonacci值
return 0;
} else if (n == 1){
return 1;
} else{
return fibonacci(n -1) + fibonacci(n - 2);
}
}
//2.在知道问题规模不是很大的时候可以静态构建查询表
//免得每次都会重复进行很多递归计算,用空间换时间
int fibonacci2( int n){
int ftab[] = {0,1,1,2,3,5,8,13,21,34,55};
if(n >= 0 && n <= 10){ //查表
return ftab[n];
} else{
return fibonacci2(n - 1) + fibonacci2(n - 2);
}
}
//3.通过数学推导来发现 Fibonacci的封闭形式
//当然这里引入了无理数,会有精度的损失
double fibonacci3( int n){
return sqrt(5)/5.0 * (pow((1 + sqrt(5)) / 2.0 , n) - pow((1 - sqrt(5)) / 2.0 , n));
}
int main()
{
int n = 10;
//printf("F(%d) = %d\n", n, fibonacci(n)); //0.125s
//printf("F(%d) = %d\n", n, fibonacci2(n)); //0.119s
printf( "F(%d) = %f\n", n, fibonacci3(n)); //0.067
return 0;
}
0 0
- 斐波那契数列数列计算
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- Linux调用backtrack函数打印程序崩溃时的调用堆栈
- 黑马程序员 初学OC的一些注意总结4(尾)
- [LeetCode]—Remove Nth Node From End of List 删除链表的倒数第n个节点
- 转置-置换-向量空间R
- 程序员的20个常见瓶颈
- 斐波那契数列
- android开发中代码片段集合
- 数组移动
- 12.0~12.8 Audio and Videl 音频和视频
- HTML5未来发展的六大趋势
- 顺序表,链表,静态链表的建立以及插入和删除操作
- Jump Game
- Java高级之反射
- 使用Java 注解