遞歸實現二分查找
阿新 • • 發佈:2017-12-01
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 "); }
遞歸實現二分查找