递归算法--->阶乘,Fibonacci数列,折半查找
来源:互联网 发布:中国消防网站的域名是 编辑:程序博客网 时间:2024/05/22 13:04
1、 阶乘
int Factorial(int n)//阶乘{int fin;if(n == 0||n == 1) return 1;else return n*Factorial(n-1) ;//----------------------递归核心:要求n!则需求n*(n-1)!}
2、Fibonacci数列
(1)递归实现:
int Fibrecurrence(int n)//Fibonacci数列,递归实现。{if(n == 1 || n==2)return 1;elsereturn Fibrecurrence(n-1)+Fibrecurrence(n-2);//-递归核心:当前项 = 前两项之和。}
(2)非递归实现:int Fibunre(int n)//Fibonacci数列,非递归实现。{int fib1 = 1;int fib2 = 1;int cur;int i;if(n==1||n==2)return 1;elsefor(i=3;i<=n;i++){cur = fib1+fib2;fib1 = fib2;fib2 = cur;}return cur;}
3、折半查找
(1)非递归:int Findun(int ar[],int n,int key)//折半查找法{int mid ;int low = 0;int hig = n-1;while(low <= hig)//注意这里要用<=,如果少了=的话,当中间那个数为要找的数则无法返回正确的地址。{mid = (low+hig)/2;if(ar[mid]==key)return mid;else if(ar[mid]>key)hig = mid-1;else if(ar[mid]<key)low = mid+1;}return -1;}(2)递归:
int Findrecurrence(int ar[],int key,int low,int hig){int mid = (low+hig)/2;while(low<=hig){ if(ar[mid] == key) return mid; else if(ar[mid]<key) return Findrecurrence(ar,key,mid+1,hig); //注意这里要写成这样。如果像非递归那样写没有加return的话就返不回来了。就会一直进入死循环呐。 else if(ar[mid]>key) return Findrecurrence(ar,key,low,mid-1);}return -1;}
测试主函数:int main(){int ar[] = {1,23,45,67,90,123,345,678,900,1000};int n ;int fin;int key;cout<<"测试阶乘,请输入n!的n值:>";cin>>n;fin = Factorial(n);cout<<fin<<endl;cout<<"测试Fibonacci数列,请输入n值:>";cin>>n; fin = Fibrecurrence(n);fin = Fibunre(n);cout<<fin<<endl;cout<<"测试折半查找,请输入要找的值:>";cin>>key;cout<<Findun(ar,10,key)<<endl;cout<<Findrecurrence(ar,key,0,10)<<endl;}
1 0
- 递归算法--->阶乘,Fibonacci数列,折半查找
- 编程算法 - 阶乘和Fibonacci数列(递归)
- Fibonacci数列-递归算法
- 折半查找(递归算法)
- 算法基础:递归---Fibonacci数列
- 递归的折半查找算法
- 折半查找的递归算法
- 递归的折半查找算法
- 折半查找的递归算法
- 折半查找的递归算法
- 算法-java 递归中的Fibonacci数列
- fibonacci 数列的非递归算法
- 请用递归算法,求Fibonacci数列。
- Fibonacci数列递归 + 数组缓存算法
- 有序表折半查找的递归算法
- 验证算法(递归的折半查找)
- java算法:折半查找(递归算法和非递归算法)
- Fibonacci数列的递归与非递归实现算法详解
- iOS-直播开发(开发从底层做起)
- 那些被误解的用户体验 | 人人都是产品经理
- windows安装mxnet
- 关于《返老还童》
- MIT 6.00 导论课程笔记(一)
- 递归算法--->阶乘,Fibonacci数列,折半查找
- Android 提供的存取数据的方式
- java中byte转换int时为何与0xff进行与运算
- KISS 原则翻译
- java的观察者模式
- 变脸式应用 - 逻辑页
- Django处理文件上传File Uploads
- 深入解析Python编程中super关键字的用法
- HDU1166 敌兵布阵 【线段树】