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


    程序基本思路:

    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.递归方法每次调用都要减小问题规模

  • 相关阅读:
    day5 元组,字典,集合
    day4预习
    day4字符串、列表
    day3预习
    day3 数据类型
    day2 python 基础入门
    动态三角形(动态规划思想入门)
    百度之星资格赛
    Audiophobia(Floyd算法)
    Hat’s Words(字典树的运用)
  • 原文地址:https://www.cnblogs.com/xk1013/p/12151928.html
Copyright © 2020-2023  润新知