打印杨辉三角形(行数可以键盘录入)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
分析:看这种图像的规律
A:任何一行的第一列和最后一列都是1
B:从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
步骤:
A:首先定义一个二维数组。行数如果是n,我们把列数也先定义为n。
这个n的数据来自于键盘录入。
B:给这个二维数组任何一行的第一列和最后一列赋值为1
C:按照规律给其他元素赋值
从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
D:遍历这个二维数组。
import.java.util.Scanner;
public class YangHuiSanJiao {
public static void main(String[] args) {
//导入键盘输入对象
Scanner sc = new Scanner(System.in);
System.out.print("请输入行列:");
int a = sc.nextInt();
//动态初始化二维数组
int[][] array = new int[a][a];
//首先实现一个三角形
for (int i = 0; i <array.length ; i++) {
for (int j = 0; j <= i ; j++) {////由于实现一个三角形,所以j <= i
//使三角形第一列和每一行的最后一个元素为1 ,if判断 j == 0 || j == i
//输入1:array[i][j] = 1;
if (j == 0 || j == i ){
array[i][j] = 1;
}else {
//根据杨辉三角可判断出第 a 行的第 j 个数字
//等于第 a - 1 行的第 j - 1 个数字加第 a -1 行第 j 个数字
array[i][j] = array[i - 1][j -1] + array[i - 1][j];
}
//输出每一行数字
System.out.print(array[i][j] + "\t");
}
System.out.println();//输出一行后执行换行。
}
}
}
输出结果
当输入6行6列时:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
斐波那契数列
1、1、2、3、5、8、13、21、34……
这个数列从第三项开始,每一项都等于前两项的和
public class FeiBoNaQi{
public static void main(String[] args) {
System.out.println("递归算法第20项为:" + diGui(20)); //调用递归方法
System.out.println("迭代算法第20项为:" + dieDai(20)); //调用迭代方法
}
public static int dieDai(int num) { //迭代算法方法
if(num <= 0) {
return 0;
}
if(num == 1 || num == 2) {
return 1;
}
int first = 1,second =1,third = 0;
for(int i = 3; i<= num ;i++) {
third = first + second;//0 1 1
first = second;
second = third;
}
return third;
}
public static int diGui(int i) { //递归算法方法
if(i <= 0) {
return 0;
}
if(i == 1 || i == 2) {//1 1
return 1;
}
return diGui(i -2) + diGui(i-1);//调用自己
}
}
输出结果
递归算法第20项为:6765
迭代算法第20项为:6765