前言:递归(recursion):递归满足2个条件
1)有反复执行的过程(调用自身)
2)有跳出反复执行过程的条件(递归出口)
第一题:汉诺塔

对于这个汉诺塔问题,在写递归时,我们只需要确定两个条件:

1.递归何时结束?

2.递归的核心公式是什么?即:

怎样将n个盘子全部移动到C柱上?

即:若使n个盘子全部移动到C柱上,上一步应该做什么?

​
代码实现
package diguui; public class digui1 { public static void hanoi(int n,int p1,int p2,int p3)
{
if(1==n)
System.out.println("盘子从"+p1+"移到"+p3);
else
{
hanoi(n-1,p1,p3,p2); System.out.println("盘子从"+p1+"移到"+p3); hanoi(n-1,p2,p1,p3);
}
}
public static void main(String[] args) {
/*4表示盘数,1表示开始柱子,2表示开始柱子,3表示开始柱子*/
hanoi( 4, 1, 2, 3);
} }
效果图

第二题:一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔子都不死,那么一年以后可以繁殖多少对兔子?
分析如下: 第一个月小兔子没有繁殖能力,所以还是一对; 两个月后,生下一对小兔子,总数共有两对; 三个月以后,老兔子又生下一对,因为小兔子还没有繁殖能力,总数共是三对; ……  依次类推可以列出下表:


可以得出:

  斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……

  这个数列从第三项开始,每一项都等于前两项之和。

package diguui;

public class digui1 {

	public static int fun(int m){
if(m<2){
return 1;
}else{
return fun(m - 1)+fun(m-2);
}
}
public static void main(String[] args) { System.out.println(fun(12));
} }

  

最新文章

  1. SQL SERVER中用户定义标量函数(scalar user defined function)的性能问题
  2. Ansible facts
  3. 数码管的封装实验 --- verilog
  4. Ganymed SSH-2 for Java
  5. 为什么用 Java:一个 Python 程序员告诉你
  6. j2ee中request.getQueryString()
  7. 面向服务的体系架构SOA
  8. 为什么windows dos和Linux shell有这样的差别??
  9. jq实战-表单验证
  10. ASP.NET MVC Autofac依赖注入的一点小心得(包含特性注入)
  11. Python random模块sample、randint、shuffle、choice随机函数概念和应用
  12. js中的一元加法和一元减法
  13. 让 Windows7 - 64bit 支持 VC++ 6.0 的解决方法(无法启动此程序,因为计算机中丢失 MSVCRTD.dll。尝试重新安装该程序以解决此问题)
  14. Python学习第五堂课
  15. VUE路由携带参数的三种方式
  16. (十)操作数据库、xlrd、xlwt补充
  17. No module named &#39;ConfigParser&#39;
  18. 设置vim支持gbk
  19. 解决PLSQL报错及配置InstantClient方法
  20. JVM启动过程

热门文章

  1. http 文件上传
  2. qsort的cmp函数理解
  3. 自动化运维工具之Puppet变量、正则表达式、流程控制、类和模板
  4. flask:蓝图--blueprint
  5. moviepy AudioClip的max_volume方法报错ValueError: operands could not be broadcast together with shapes(2,)
  6. moviepy音视频剪辑:使用fl_time进行诸如快播、慢播、倒序播放等时间特效处理的原理和可能遇到的坑
  7. PyQt(Python+Qt)学习随笔:MoviePy视频转GIF动图相关方法介绍
  8. Android基础02
  9. 团队作业4-Day5
  10. Scrum 冲刺第七天