• 用递归判断字符串是否为回文


    程序基本思路:

    1.首先判断若字符串的长度为0或1,如果是,则这个字符串是回文序列,程序直接结束

    2.若字符串长度大于1,先将字符串转化成字符数组,定义旗帜flag、字符数组头和尾标识,将字符数组首地址和以上定义传给递归方法

    3.用头尾标记数组头尾字符来进行一一比较,如果一致,继续递归调用自身,直至达到递归终止条件。如果中途有不匹配的,返回输出字符串不是回文序列。

    递归终止条件为头尾标记相等或相差为1,返回输出字符串是回文序列。

    import java.util.Scanner;
    
    public class Huiwen {
        static char []a=new char[1000];
        static String str;
        static int f=0;
        static int n=0;
        static Scanner sc=new Scanner(System.in);
        public static void main(String[] args) {
            str=sc.nextLine();
            a=str.toCharArray();
            huiWen(a,n);
            if(f==0) {
                System.out.println(str+" : "+"不是回文序列");
            }
            else {
                System.out.println(str+" : "+"是回文序列");
            }
        }
        public static void huiWen(char[] a,int n) {
            if(a.length==1||a.length==0) {
                f=1;
                return ;
            }
            if(a.length-2*n-1==1) {
                f=1;
                return ;
            }
            if(a.length-2*n-1==2) {
                if(a[n]==a[a.length-n-1]) {
                    f=1;
                    return ;
                }
                else {
                    f=0;
                    return ;
                }
            }
            
            if(a[n]==a[a.length-n-1]) {
                n=n+1;
                huiWen(a,n);
                
            }
            else {
                f=0;
                return ;
            }
            
        }
    
    }

    测试结果

     

     

    总结

    1. 递归方法要明确递归终止条件

    2.递归要调用自身

    3.递归方法每次调用都要减小问题规模

  • 相关阅读:
    RHEL7基本命令
    RHEL7VIM编辑器
    hello world
    配置mysql允许远程连接
    c#利用HttpWebRequest获取网页源代码
    C++局部变量详解(笔试题)
    c语言文件常用的操作
    Cocos2dx v3.1 初识(一)
    创建钩子(Hook)
    Extjs4.2.0 Form 的使用
  • 原文地址:https://www.cnblogs.com/xk1013/p/12151928.html
Copyright © 2020-2023  润新知