递归实现二分查找

Posted 菜鸟根据地

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归实现二分查找相关的知识,希望对你有一定的参考价值。

 

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

 

以上是关于递归实现二分查找的主要内容,如果未能解决你的问题,请参考以下文章

Java源码分析:二分查找 + 循环递归实现

7JS实现二分查找

二分查找非递归算法实现

算法递归算法 ② ( 使用递归实现二分法 | if else 编码优化 )

算法拾遗二分查找递归非递归实现

找数字(递归,二分查找)