需求:1、输入一个数n,计算输出斐波那契数列的第n个值。(斐波那契数:一个数等于前两个数的和)
import java.util.Scanner;
public class Fibonacci {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入要计算的斐波那契数列的第n个值:");
int num = scan.nextInt();
if (num <= 2) {
System.out.println("第" + num + "个斐波那契数列的值是: 1");// 前两个斐波那契数都是1
} else {
int n1 = 1, n2 = 1, sn = 0;
for (int i = 0; i < num - 2; i++) {
sn = n1 + n2;// 后一个斐波那契数数等于前两个斐波那契数数的和
n1 = n2;
n2 = sn;
}
System.out.println("第" + num + "个斐波那契数列的值是:" + sn);
}
scan.close();
}
}
另一种是用数组的做法
import java.util.Scanner;
public class Fibonacci2 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while (true) {
System.out.println("请输入要计算的斐波那契数列的第n个值(大于1的整数):");
int n = scan.nextInt();
sequence(n);
}
}
public static void sequence(int n) {
int[] arr = new int[n];// 定义一个一维数组,用于存储斐波那契数列的值,长度为n
arr[0] = arr[1] = 1;// 由于前两个元素都为1,所以数组的0角标位和1角标位的元素值都为1
for (int i = 1; i < arr.length - 1; i++) {
arr[i + 1] = arr[i] + arr[i - 1];
}
System.out.println("该斐波那契数列为:");
for (int x : arr)// 遍历数组,取出斐波那契数列元素值
{
System.out.print(x + " ");
}
// 打印用户输入的第n个斐波那契数列的值
System.out.println("\n斐波那契数列的第" + n + "个值是:" + arr[arr.length - 1]);
}
}