zoukankan      html  css  js  c++  java
  • 递归实现二分查找

    回文是一种字符串,它正着读和反着读都是一样的。比如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
    ");
            else
                printf("fault
    ");
    
        }
        
        system("pause ");
    }
  • 相关阅读:
    MySQL之增_insert-replace
    Linux如何配置bond
    行转列及列转行查询
    SELECT中常用的子查询操作
    SELECT中的多表连接
    MySQL最常用分组聚合函数
    SELECT中的if_case流程函数
    MySQL常用日期时间函数
    MySQL常用数值函数
    dnslog注入
  • 原文地址:https://www.cnblogs.com/xiaochige/p/7940285.html
Copyright © 2011-2022 走看看