1. 程式人生 > >遞歸實現二分查找

遞歸實現二分查找

return 需要 出現 二分查找 col 規模 pac word using

回文是一種字符串,它正著讀和反著讀都是一樣的。比如level,eye都是回文。用叠代的方法可以很快地判斷一個字符串是否為回文。用遞歸的方法如何來實現呢?

首先我們要考慮使用遞歸的兩個條件:

  • 第一:這個問題是否可以分解為形式相同但規模更小的問題?
  • 第二:如果存在這樣一種分解,那麽這種分解是否存在一種簡單情境?

#include"iostream"
#include<stdio.h>
#include"string"
#define MAX 100
using namespace std;


/*這是錯誤的,傳進str的整個string則沒有辦法化解成小問題,這裏需要指
之後強行把string str 改為指針也不對,會出現異常錯誤。
int per(int n ,string str){
    if (n == 1 && n == 0)
        return 1;
    else {
        per(n - 2, str[1]);
    }
}
*/ int per(int n, char *str) { if (n == 1 || n == 0) return 1; else { if (str[0] == str[n - 1]) per(n - 2, &str[1]); else return -1; } } int main() { int len; char str[MAX]; while(1) { printf("please enter the word :
"); //os<<s scanf("%s", &str); len = (int)strlen(str); int result = per(len, str); if (result == 1) printf("true\n"); else printf("fault\n"); } system("pause "); }

遞歸實現二分查找