码迷,mamicode.com
首页 > 其他好文 > 详细

递归实现二分查找

时间:2017-12-01 11:43:54      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:简单   字符串   return   ret   turn   递归   查找   can   amp   

 

回文是一种字符串,它正着读和反着读都是一样的。比如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 ");
}

 

递归实现二分查找

标签:简单   字符串   return   ret   turn   递归   查找   can   amp   

原文地址:http://www.cnblogs.com/xiaochige/p/7940285.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!