M斐波那契数列java代码实现
时间: 2023-12-04 07:22:19 浏览: 64
public static int fibonacci(int n) {
if(n <= 0) {
return 0;
} else if(n == 1) {
return 1;
} else {
return fibonacci(n-1) + fibonacci(n-2);
}
}
//测试代码
public static void main(String[] args) {
int n = 10;
for(int i = 1; i <= n; i++) {
System.out.print(fibonacci(i) + " ");
}
}
相关问题
Fibonacci数列 斐波那契数列的前两项为1,后面每一项都为前两项和。 要求:输出前一百项数列内容,并求出前100项的和。 选作:输出第m到n项的和。用java编写
好的,以下是你想要的程序代码:
```java
import java.util.Scanner;
public class Fibonacci {
public static void main(String[] args) {
// 输出前100项斐波那契数列
int[] fibonacci = new int[100];
fibonacci[0] = 1;
fibonacci[1] = 1;
for (int i = 2; i < 100; i++) {
fibonacci[i] = fibonacci[i - 1] + fibonacci[i - 2];
}
for (int i = 0; i < 100; i++) {
System.out.print(fibonacci[i] + " ");
}
System.out.println();
// 求前100项斐波那契数列的和
int sum_fibonacci = 0;
for (int i = 0; i < 100; i++) {
sum_fibonacci += fibonacci[i];
}
System.out.println("前100项的和为:" + sum_fibonacci);
// 输出第m到n项斐波那契数列的和(m和n都是用户输入的)
Scanner scanner = new Scanner(System.in);
System.out.print("请输入m: ");
int m = scanner.nextInt();
System.out.print("请输入n: ");
int n = scanner.nextInt();
int sum_m_to_n = 0;
for (int i = m - 1; i < n; i++) {
sum_m_to_n += fibonacci[i];
}
System.out.println("第" + m + "项到第" + n + "项的和为:" + sum_m_to_n);
}
}
```
注意,你需要自己在程序中输入m和n的值。
斐波那契数列快速幂java
以下是斐波那契数列的快速幂Java代码实现:
```java
public static int fibonacci(int n) {
if (n <= 1) {
return n;
}
int[][] result = {{1, 0}, {0, 1}}; // 初始化矩阵
int[][] base = {{1, 1}, {1, 0}}; // 斐波那契数列的转移矩阵
while (n > 0) {
if (n % 2 == 1) {
result = multiply(result, base);
}
base = multiply(base, base);
n /= 2;
}
return result[0][1];
}
public static int[][] multiply(int[][] a, int[][] b) {
int m = a.length;
int n = b[0].length;
int[][] result = new int[m][n];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
for (int k = 0; k < b.length; k++) {
result[i][j] += a[i][k] * b[k][j];
}
}
}
return result;
}
```
其中,`fibonacci(int n)`函数使用快速幂的思想计算第n个斐波那契数,`multiply(int[][] a, int[][] b)`函数用于计算两个矩阵的乘积。
阅读全文