1. 程式人生 > >找數字(遞歸,二分查找)

找數字(遞歸,二分查找)

二分 code fin its 方便 查找 個數 縮小 遞歸

題目:在一從大到小排序的序列中用遞歸找一個數在不在這序列,在輸出yes,不在輸出no

這題用了二分查找的遞歸實現

思路:

把數組和變量都變成全局變量方便遞歸函數修改

然後如果不可能就跳出循環

如果可能但現在沒找到就縮小範圍進入下一個遞歸過程

如果找到了就輸出

代碼:

#include<bits/stdc++.h>
using namespace std;
int a[1000];
int n,key;

int finder(int l,int r)//左和右
{
    if(l>r)
    {
        cout<<"no"<<endl;
        
return 0; } int mid=(l+r)/2; if(a[mid]<key) { finder(l,mid-1); } else if(a[mid]>key) { finder(mid+1,r); } else { cout<<"yes"<<endl; return 0; } } int main() { std::ios::sync_with_stdio(
false); cin>>n>>key; for(int i=1;i<=n;i++) cin>>a[i]; finder(1,n); return 0; }

找數字(遞歸,二分查找)