斐波那契数列动归java
时间: 2024-05-25 07:09:23 浏览: 98
斐波那契数列是指:1、1、2、3、5、8、13、21、34……在数列中,从第三项开始,每一项都等于前两项之和。斐波那契数列在计算机科学和编程中有广泛的应用。动态规划是解决斐波那契数列问题的常用方法。以下是斐波那契数列的动态规划实现方式(Java代码):
```
public static int Fibonacci(int n) {
if (n <= 0) {
return 0;
}
if (n == 1) {
return 1;
}
int[] dp = new int[n + 1];
dp = 0;
dp = 1;
for (int i = 2; i <= n; i++) {
dp[i] = dp[i - 1] + dp[i - 2];
}
return dp[n];
}
```
以上代码中,我们使用了一个数组 `dp` 来存储每个斐波那契数列元素的值。首先我们判断参数 `n` 的值是否为非正数,如果是,则直接返回 `0`。如果参数 `n` 的值为 `1`,则返回 `1`。否则,我们根据递推公式 $F(n)=F(n-1)+F(n-2)$ 来计算每个斐波那契数列元素的值,存入数组 `dp` 中。最后返回数组中第 `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)`函数用于计算两个矩阵的乘积。
斐波那契数列迭代算法java
以下是斐波那契数列迭代算法的Java代码实现:
```java
public static long fib(int n) {
if (n < 1) {
return -1;
}
if (n == 1 || n == 2) {
return 1;
}
long a = 1, b = 1;
for (int i = 3; i <= n; i++) {
long c = a + b;
a = b;
b = c;
}
return b;
}
```
这个算法使用了迭代的方式计算斐波那契数列,避免了递归算法中可能出现的栈溢出问题。在循环中,我们使用三个变量a、b、c来保存计算过程中的值,其中a和b分别表示前两个斐波那契数,c表示当前计算的斐波那契数。每次循环中,我们将a和b的值更新为上一次计算的结果,然后计算出c的值,最后返回b即可。
阅读全文
相关推荐









