题目一:求5的阶乘:
思路解析:函数的递归
代码实现:
package shipin;
public class Array_04_01 {
public static void main(String[] args) {
// 求5的阶乘
int jc = name(5);
System.out.println(jc);
}
public static int name(int n) {
if (n == 0) {
return 1;
}else {
return n * name(n - 1);
}
}
}
题目二:斐波那切数列(不死神兔)
题目:有一对兔子,从出生后第三个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,加入兔子都不死,问第二十个月的兔子对数是多少?
思路分析:
第一月与第二个月作为迭代函数“出口”,从第三个月开始生兔子,前两个月之和为第三个月的数量,计算公式如下:
F(0) = 0
F(1) = 1
F(n) = F(n - 1) + F(n - 2)
有关斐波那契的介绍请点击这(传送门)
代码实现(想看其他语言实现请看我的其他博客):
package shipin;
import java.util.Scanner;
public class Array_04_01 {
public static void main(String[] args) {
Scanner set = new Scanner(System.in);
System.out.println("请输入求斐波那契数列的最后一个数值:");
int str = set.nextInt();
System.out.println(method(str));
}
public static int method(int n) {
if (n == 1 || n == 2) {
return 1;
}else {
//不是第一个月,则后一个月是前两个月之和
return method(n - 1) + method(n - 2);
}
}
}
关于此不死神兔的问题,我个人有以下的见解,,下面是我的代码,希望有能力者留言解答,(输入-0则程序会终止,透过问题看到本质)
import java.util.Scanner;
public class Array_04_01 {
public static void main(String[] args) {
boolean cry = true;
Scanner set = new Scanner(System.in);
try {
while (cry) {
System.out.println("请输入不死神兔的月份:(温馨提示:输入0程序终止!)");
int str = set.nextInt();
if (str > 0) {
System.out.println("不死神兔的数量为:"+method(str));
}
if (str == 0) {
cry = false;
}
if (str < 0) {
System.out.println("不存在这样的情况! 请重新输入:");
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static int method(int n) {
if (n == 0) {
System.out.println("不存在0月份!请重新输入:");
}
if (n == 1 || n == 2) {
return 1;
}else {
//不是第一个月,则后一个月是前两个月之和
return method(n - 1) + method(n - 2);
}
}
}
本文深入探讨了递归算法的应用,通过实例讲解了5的阶乘和斐波那契数列的计算方法。提供了完整的Java代码实现,展示了如何利用递归解决数学问题。
9万+

被折叠的 条评论
为什么被折叠?



