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 ");
    }
  • 相关阅读:
    A. k-rounding
    哗啦啦村的刁难(4)
    喵哈哈村的种花魔法
    喵哈哈村的赛马比赛
    喵哈哈村的括号序列
    喵哈哈村的排队
    python中递归调用
    python-中函数的参数
    shell中参数及带色彩打印
    python-文件读写
  • 原文地址:https://www.cnblogs.com/xiaochige/p/7940285.html
Copyright © 2011-2022 走看看