目录
前言:
打卡!
递归对于初学者来讲是真的有些难理解,我初学递归时,第一个列子是汉诺塔游戏,我当时就绝望了,后来继续学习遇到了简单的题,一下就懂了,今天分享两个列子,简单的理解递归的应用。
1、什么是递归?
递归定义是数理逻辑和计算机科学用到的一种定义方式,使用被定义对象的自身来为其下定义(简单说就是自我复制的定义)。递归定义(recursive definition)亦称归纳定义,一种实质定义,指用递归的方法给一个概念下的定义。
2、递归的定义:
递归定义是数理逻辑和计算机科学用到的一种定义方式,使用被定义对象的自身来为其下定义(简单说就是自我复制的定义)。递归定义与归纳定义类似,但也有不同之处。递归定义中使用被定义对象自身来定义,而归纳定义是使用被定义对象的已经定义的部分来定义尚未定义的部分。不过,使用递归定义的函数或集合,它们的性质可以用数学归纳法,通过递归定义的内容来证明。
简单来说:递归函数就是自己调用自己的函数!
3、递归图示:
4、第一题:
(1)题目:
利用递归方法求5!
(2)代码:
a、关键处解析:
//定义一个新的方法intu() public static int retu(int n) { int s; //存计算结果 if(n==1) //如果n等于1时 { s=1; //s就等于1 } else { s=n*retu(n-1); //否则n就乘上(调用函数自己)的n-1 } return s; }
b、完整代码:
public class exercise15 { public static void main(String[] args) { int n=5; System.out.print(retu(n)); } public static int retu(int n) { int s; if(n==1) { s=1; } else { s=n*retu(n-1); } return s; } }
5、第二题:
(1)题目:
有五个人坐在一起,问第五个人多少岁?他说比第四个人大2岁。问第四个人多少岁?他说比第三个人大2岁。问第三个人多少岁?他说比第二个人大2岁。问第二个人多少岁?他说比第一个人大2岁。问第一个人多少岁?他说是10岁。问第五个人多大?
(2)代码:
a、关键处解析:
//同样是定义一个新的方法 public static int retu(int n) { int s; if(n==1) //当为第一个人时,年龄是10岁 { s=10; } else { s=2+retu(n-1); //否则其他人均是前一个人的年龄加2 } return s; }
b、完整代码:
public class exercise15 { public static void main(String[] args) { int n=5; System.out.print(retu(n)); } public static int retu(int n) { int s; if(n==1) { s=10; } else { s=2+retu(n-1); } return s; } }