二维数组和面向对象练习
【摘要】 二维数组以及面向对象练习题
一、杨辉三角
使用二维数组,打印一个10行的杨辉三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
……
规律:
1)第一行有一个元素 第 n 行有 n 个元素
2)每一行第一个元素和最后一个元素都为 1
3)从第三行开始 , 对于非第一个元素和最后一个元素的值
arr [i] [j] = arr[i - 1] [j] + arr[ i - 1] [j - 1]; (该数为:上一行的该列 + 上一行的前一列的值)
演示:
public class YangHui {
public static void main(String[] args) {
int[][] yangHui = new int[10][];// 十行杨辉三角所以有十个一维数组
// 遍历二维数组的每个一维数组
for(int i = 0; i < yangHui.length; i++) {
// 给每个一维数组(行)开辟空间
yangHui[i] = new int[i + 1];
for(int j = 0; j < yangHui[i].length; j++) {
//每一行的第一个元素和最后一个元素都是1
if(j == 0 || j == yangHui[i].length - 1) {
yangHui[i][j] = 1;
} else {// 不是第一个和最后一个就是中间的
yangHui[i][j] = yangHui[i - 1][j] + yangHui[ i - 1][j - 1];
}
}
}
// 遍历输出
for( int i = 0 ; i < yangHui.length ; i++) {
for(int j = 0 ; j < yangHui[i].length ; j++) {
System.out.print(yangHui[i][j] + " ");
}
System.out.println();
}
}
}
输出结果为:
二、猴子吃桃
有一堆桃子,猴子第一天吃了其中的一半多一个,以后猴子每天都会吃剩下桃子中的一半多一个。到第10天时,猴子正想吃时,发现只有1个桃子了。
问:最初有多少个桃子
思路分析:
1)day = 10, 有一个桃子
2)day = 9, 有(day10 + 1) * 2 = 4 个桃子
3)day = 8, 有(day9 + 1) * 2 = 10 个桃子
4)规律:前一天的桃子 = (后一天的桃子 + 1) * 2 个
代码:
public class MonkeyAndPeach {
public static void main(String[] args) {
AA a = new AA();
int number = a.peach(1);
if(number != 0) {
System.out.println("最初有" + number + "个桃子");
}
}
}
class AA{
public int peach(int day) {
if(day == 10) { // 第10天,只有一个桃子
return 1;
} else if(day >= 1 && day <= 9) {
return (peach(day + 1) + 1) * 2;
} else {
System.out.println("天数错误,要在 1 - 10 范围内");
return 0;
}
}
}
输出结果为:
三、斐波那契数列
使用递归的方法求出斐波那契数
1,1,2,3,5,8,13……
输入一个整数n,求出它的值为多少
思路分析:
1)当n = 1时,斐波那契数是1
2)当n = 2时,斐波那契数是1
3)当n > 3时,斐波那契数是前两个数之和
代码:
import java.util.Scanner;
public class RecursionExercise01 {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入一个整数:");
int n = myScanner.nextInt();
AA a = new AA();
int result = a.fibonacci(n);
if(result != 0) {
System.out.println("当n=" + n + "时,对应的斐波那契数为:" + result);
}
}
}
class AA {
public int fibonacci(int n) {
if(n >= 1) {
if(n == 1 || n == 2) {
return 1;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
} else {
System.out.println("输入数据不符合标准,n应 >= 1");
return 0;
}
}
}
输出结果为:
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)