Java递归算法实例

news/2024/6/17 11:15:52 标签: 递归算法, java, 递归, recursion

递归recursion):程序调用自身的编程技巧。

递归满足2个条件:

  1. 有反复执行的过程(调用自身)
  2. 有跳出反复执行过程的条件(递归出口)

1、阶乘

n! = n * (n-1) * (n-2) * …* 1(n>0)

int factorial(int n){
    int sum=0;
    if(n==0){//递归出口
        return 1;
    }else{
        sum = n*factorial(n-1);//反复执行的过程
    }
    return sum;
}

2、汉诺塔问题
这里写图片描述
递归实现思路:

  1. 当仅有1个盘子时,把这个盘子从A塔柱移动到C塔柱上
  2. 当圆盘的个数多于1个时,如下解决:
    (1) 先将A塔柱上的(n-1)个圆盘通过C塔柱移动到B塔柱上
    (2) 再将A塔柱上的第n个圆盘直接移动到C塔柱上
    (3) 最后B塔柱上的(n-1)个圆盘通过A塔柱移动到C塔柱上
void hanoi(int n,int p1,int p2,int p3){
    if(n==1)
        System.out.println("把第"+n+"号盘子从"+p1+"移到"+p3); 
    else
    {
        hanoi(n-1,p1,p3,p2);
        System.out.println("把第"+n+"号盘子从"+p1+"移到"+p3); 
        hanoi(n-1,p2,p1,p3);
    }
}

http://www.niftyadmin.cn/n/1530618.html

相关文章

ADT安装后没有图标Android SDK Manager图标

ADT安装后没有图标Android SDK Manager图标,也就是没有下图标注的图标: 解决方法: 1、Window->Perspective->Customize Perspective 2、在打开的窗口中勾选Android SDK and AVD Manager 3、如果Android SDK and AVD Manager这…

String与Integer的相互转化

一、Integer转String //方法一:Integer类的静态方法toString() Integer a 2; String str Integer.toString(a)//方法二:Integer类的成员方法toString() Integer a 2; String str a.toString();//方法三:String类的静态方法valueOf() Integer a 2; String str String.val…

java.lang.UnsatisfiedLinkError: Couldn't load hyphenate from loader dalvik.system.

当你遇到类似这种问题时,请不要烦躁,检查一下你的libs,看看里面是不是有类似armeabi*文件夹,特别要注意看看,这些文件夹下面是不是有jar包存在。 我每次把项目上传到svn上面后,下载下来就会发现原本libs/a…

如何禁用电脑上面的触摸板?

有时候我们需要禁用电脑上面你的触摸板,但是按了禁用按键后发现并没什么卵用(例如,联想电脑是F6),是因为没有安装触摸板驱动程序,下面给大家分享如何安装触摸板驱动程序,禁用触摸板。 这里以联…

Android真机调试时,Device的连接容易断开

开发Android项目时,使用真机调试的时候,Device的连接容易断开。经常出现远程关闭了一个现有连接。 下面是我们经常用的一些解决方式: 1、关闭USB调试,重新打开 2、拔下数据线,重新连接 3、换一个USB接口&#xff0…

com/android/dx/command/dexer/Main : Unsupported major.minor version 52.0

如果你在开发过程中遇到了上述的Bug,基本上是JDK版本不一致造成的,指的是高版本的JDK编译的class不能放在低版本的JDK上运行。 如果是Version 52,就表示JDK8编译的class不能运行在JDK7上,所以需要在本地安装JDK8. 如果是Version…

java项目debug 的时候总是跳转threadpoolexecutor

Eclipse -> Preferences ->Java ->Debug “Suspend execution on uncaught exceptions” 勾去掉 就不会进debug了 注:Suspend execution on uncaught exceptions的意思是“当有未捕获的异常时暂停执行” http://bbs.csdn.net/topics/390894732

Spring的FactoryBean详解

在介绍FactoryBean之前,我们首先要分辨FactoryBean与BeanFactory的区别。 BeanFactory: 以Factory结尾,表示它是一个工厂类,是用于管理Bean的一个工厂。FactoryBean:以Bean结尾,表示它是一个Bean&#xff…