斐波那契递归算法
来源:互联网 发布:水溶性颜料淘宝 编辑:程序博客网 时间:2024/06/05 17:22
递归--以空间换时间
首先斐波那契数列的一种定义为
利用这个定义,我们可以利用分治法递归解决它。
只要求矩阵 的n次方。
分治法思想就是 , 求矩阵a的n/2次方,然后再相乘,求得a(n为奇数时候需要特殊处理)
代码如下,很简洁的递归。
#include <stdio.h>#include <string.h>void fn(int a[][2] , int n){//计算方阵a的n次方 if (n>1){ fn(a,n/2);//计算方阵a的n/2次方,存入a中 int temp[2][2]; memset(temp,0,sizeof(temp)); for (int i = 0 ; i < 2 ; i ++) for (int j = 0 ; j < 2 ; j ++){ for (int k = 0 ;k <2 ;k++) temp[i][j]=(a[i][k]*a[k][j]+temp[i][j])%10000; } if (n%2==1){ a[0][0] = (temp[0][0]+temp[0][1])%10000; a[0][1] = (temp[0][0])%10000; a[1][0] = (temp[1][0]+temp[1][1])%10000; a[1][1] = (temp[1][0])%10000; }else{ for (int i = 0 ; i < 2 ; i ++) for (int j = 0 ; j < 2 ; j ++){ a[i][j] =temp[i][j]; } } }}int main(){ int n ; while (~scanf("%d",&n)&&n!=-1){ if (!n){ printf("0\n"); }else{ int a[2][2] = {1,1,1,0}; fn(a,n); printf("%d\n",a[0][1]); } } return 0;}
0 0
- JAVA斐波那契递归算法
- 斐波那契的递归算法
- 斐波那契递归算法
- JAVA斐波那契递归算法
- 斐波那契数列递归算法
- 斐波那契数列递归与非递归算法
- 斐波那契数列递归和非递归算法
- JAVA斐波那契非递归算法
- Fibonacci(斐波那契)序列的递归算法
- 斐波那契数列非递归算法(fibonacci)
- 使用递归算法实现斐波那契数
- 斐波那契数列的递归算法
- 递归算法1-斐波那契数列
- 【数据结构】递归算法—斐波那契数列
- Java 递归算法 斐波那契数列
- (Java)用递归算法实现斐波那契数列
- 【递归算法】 斐波那契数列的备忘录优化
- 【C】斐波那契数列(递归算法)
- ElasticSearch(九)-分布式搜索
- Windows下安装node及基本操作
- 类工厂方法是什么?
- centos6.7环境之kvm虚拟化quem工具配置及使用详解
- Android 使用NineOldAndroids实现绚丽的ListView左右滑动删除Item效果
- 斐波那契递归算法
- AlertViewController的使用
- 高空作业的三宝
- 确保打在rpm包中的.so文件具有可执行权限
- war包和jar包区别
- poj2239 poj1274【二分匹配】
- 蓝桥杯练习题 PREV-11 横向打印二叉树(排序二叉树)
- git 相关的命令
- 学习算法之路