• 递归实现二分查找


    回文是一种字符串,它正着读和反着读都是一样的。比如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 ");
    }
  • 相关阅读:
    localhost和本机IP和127.0.0.1之间的区别
    git客户端msysGit和TortoiseGit使用
    JS正则
    css中外边距
    css定位浮动总结
    Teleport Ultra 抓包工具
    编程实践心得与设计思想
    Java 读写Properties配置文件
    如何成为一个优秀的DBA
    对DB2常见错误的列举以及破解方案
  • 原文地址:https://www.cnblogs.com/xiaochige/p/7940285.html
Copyright © 2020-2023  润新知