`

两种递归方式实现回文字

阅读更多

条件:回文字为奇数长度

第一种:

import java.util.*;
public class rollback {

    static Vector s;
    public static void main(String[] args)
    {
        rollback a =new rollback();
        s = new Vector();
        String v="123454321";
        for(int i=0;i<v.length();i++)
        {
            s.add(v.charAt(i));
        }
        System.out.println(a.fun(s,0,8,8));
    }


    boolean fun(Vector s,int start,int end,int n)
    {
           if(start==end)
               return true;
           if(s.get(start)==s.get(end))
               return fun(s,start+1,n-start-1,n);

             return false;
    }
}

 

第二种:

import java.util.*;
public class rollback1 { 

    static Vector s; 
    public static void main(String[] args) 
    { 
        rollback1 a =new rollback1(); 
        char[] number = new char[]{'a','b','c','d','c','b','a'}; 
        System.out.println(String.valueOf(fun(number))); 
    }

    static boolean fun(char[] number) 
    { 
        if(number.length%2 == 0) 
            return false; 
        if(number.length== 1) 
            return true; 
        else 
        { 
            if(number[0] != number[number.length - 1]) 
                return false; 
            else 
            { 
                //delete the first element and the last element 
                char[] numberCopy = new char[number.length - 2]; 
                for(int i = 0; i < number.length -2; i ++) 
                    numberCopy[i] = number[i + 1]; 
                
                   return fun(numberCopy); 
            } 
        } 
    } 
} 

 

分享到:
评论

相关推荐

    C语言 递归调用程序和文件系统

    1.分别调试课件中的给定n求Fibonacci(n)递归与非递归函数,并编写测试函数对两种或多种不同方法所需时间进行比较,且当某一轮计算所需时间超过给定最大时间量时(如超过10秒),停止计算。计算过程中要求输出类似...

    tuxingxuedazouye.rar_三维曲线旋转_曲线绘制_简单点消除_绘制交互旋转_递归圆

    6. 两种扫描多边形扫描转换算法实现(扫描线算法为必做,基于求余运算的边缘填充和边标志算法任选一种); 7. 4连通区域的递归种子填充算法,和扫描线种子填充算法,要求种子点(x,y)可交互输入)。 8. 简单三维...

    【swjtu】数据结构第2次作业.docx

    要求:采用递归和非递归(用堆栈)两种算法;输入的整数不允许按单个字符输入。 2. 编写程序,实现中缀表达式化为后缀式输出。已知中缀表达式中操作数全部用小写英文字母表示,运算符只含有+, -, *, /四种,定界符只有...

    数据结构与算法教学大纲程序代码

    熟练掌握在两种存储结构上实现栈和队列的基本运算;学会利用栈和队列解决一些实际问题。 五:内容:1、若X和Y是用结点大小为1的单链表表示的串,设计算法找出X中第一个不在Y中出现的字符。 2、设计一算法,在顺序串...

    树,时钟,三元组

    (有两种数据结构,自己看哦) 5.类实现层次遍历二叉树:用类和对象的方法实现按层次遍历二叉树。 把里面的东西简单介绍下,很简单的东西,剩下的自己看,呵呵,我们的数据结构就学到了树这章,就发这么多吧,以 ...

    Android开发资料合集--续

    81、获得屏幕像素的两种方法 126 82、ShowDialog(int id); 126 83、透明效果的实现 128 84、根据网络或GPS获得经纬度 128 85、TextView 130 90、获取存储卡和手机内部存储空间 130 91、获得当前应用的UID 131 92、...

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    实例123 使用迭代器实现文字的动态效果 151 实例124 使用分部类实现多种计算方法 153 实例125 使用分部类记录学生信息 155 5.5 泛型的使用 156 实例126 使用泛型存储不同类型的数据列表 156 实例127 通过泛型查找...

    net学习笔记及其他代码应用

    10.求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m [Page] 答: int Num = this.TextBox1.Text.ToString() ; int Sum = 0 ; for (int i = 0 ; i ; i++) { if((i%2) == 1) { Sum += i ; ...

    java自学之道

    3.1 多态分为两种 3.2 调用一个对象方法的机制 3.3 方法调用举例 4、构造函数的重载 4.1 默认字段初始化 4.2 默认构造函数 4.3 显式字段初始化 4.4 构造函数被调用后的详细执行过程 5、包 5.1 创建包 5.2 创建...

    数据结构(C++)有关练习题

    &lt;br&gt;实验二 单链表结构及计算 实验目的: 通过实验掌握下列知识: 1、熟悉线性表的基本运算在两种存储结构(顺序结构和链式结构)上的实现; 2、继续熟悉VC编程、编译和调试环境; 内容及步骤:...

    java源码包---java 源码 大量 实例

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

    java源码包2

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

    java源码包3

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

    java源码包4

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

    java范例开发大全源代码

     实例18 Java中的递归 31  实例19 男生女生各多少人 32  实例20 求水仙花数 34  实例21 求任意一个正数的阶乘 35  实例22 求n的n次方 35  实例23 利用for循环输出几何图形 36  实例24 杨辉三角 ...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用...

Global site tag (gtag.js) - Google Analytics