用递归和非递归实现斐波拉切数列和二分查找
2016-12-01 01:17
155 查看
1.斐波那契数列递归实现 #include<iostream> using namespace std; long long* MyFib(size_t n) { long long* FibArray=new long long[n+1]; FibArray[0]=0; FibArray[1]=1; for(size_t idx=2;idx<=n;++idx) { FibArray[idx]=FibArray[idx-1]+FibArray[idx-2]; } return FibArray; } int main() { long long* p=MyFib(10); cout<<p[5]<<endl; return 0; } 2.斐波那契数列递归实现 #include<iostream> using namespace std; size_t MyFib(size_t n) { return n<2? n:MyFib(n-1)+MyFib(n-2); } int main() { size_t n=5; cout<<MyFib(n)<<endl; return 0; } 3.二分查找(非递归) #include<iostream> using namespace std; int HalfFind(int* arr,size_t size,int data) { int low=0; int high=size-1; while(low<=high) { size_t mid=(low+high)/2; if(arr[mid]==data) return mid; else if(arr[mid]>data) high=mid-1; else low=mid+1; } return -1; } int main() { int arr[]={1,3,5,7,9,11,15,16,19}; size_t size=sizeof(arr)/sizeof(arr[0]); int n=11; cout<<HalfFind(arr,size,n)<<endl; return 0; } 4.二分查找(递归) #include<iostream> using namespace std; size_t HalfFind(int* arr,size_t low,size_t high,int data) { if(high<low) return -1; size_t mid=(low+high)/2; if(arr[mid]==data) return mid; else if(arr[mid]>data) HalfFind(arr,low, mid-1,data); else HalfFind(arr, mid+1,high,data); return false; } int main() { int arr[]={1,3,5,7,9,11,15,16,19}; size_t size=sizeof(arr)/sizeof(arr[0]); int n=86; cout<<HalfFind(arr,0,size,n)<<endl; return 0; }
相关文章推荐
- 数据结构:二分查找的递归与非递归实现--C实现
- 二分查找 递归实现 和 循环实现
- 斐波那契数列和二分查找的算法(递归与非递归)
- c语言简单递归/非递归实现二分查找
- 二分查找的两种实现方式--循环和递归
- 二分查找的递归与迭代实现
- C语言经典算法(九)——递归实现二分查找的两种方法
- 二分查找的递归实现和迭代实现
- 算法(第4版) 学习笔记二——二分查找的普通实现与递归实现
- 二分查找的递归和非递归实现
- 二分查找的非递归实现
- 二分查找的C++非递归实现
- 二分查找递归与非递归实现
- 递归和非递归实现二分查找
- 二分查找递归和非递归实现
- C语言实现 二分查找数组中的Key值(递归和非递归)
- 二分查找的递归实现和迭代实现
- 《算法导论》第二章----插入排序(伪代码实现、课后习题(递归版本、二分查找策略版本))
- 【Algorithm】二分查找(递归实现)
- 二分查找的递归和非递归实现