首页 > 其他分享 >剑指offer - 面试题9:斐波那契数列

剑指offer - 面试题9:斐波那契数列

时间:2022-10-28 12:02:31浏览次数:69  
标签:面试题 return int 斐波 second 那契 data public first


package Chapter2;

/**
* 面试题9:菲波那切数列
* 输入一个整数n,请你输出斐波那契数列的第n项。
* 1、1、2、3、5、8、13、21、34、
*/
/*
* 变形题:
* 一只青蛙一次可以跳上1级台阶,也可以跳上2级。
* 求该青蛙跳上一个n级的台阶总共有多少种跳法。
*/

public class _09_fibonacci {
public static void main(String[] args) {
_09_01_function f = new _09_01_function();
System.out.println(f.fibonacci(9));
}
}

class _09_01_function {
int fibonacci(int n) {
int []result = {0, 1};
if(n < 2) return result[n];

int data = 0;
int data_first = 0;
int data_second = 1;

for (int i = 2; i <= n; i++) {
data = data_first + data_second;
data_first = data_second;
data_second = data;
}
return data;
}
}


一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。



public class Solution {
public int JumpFloorII(int n) {
if (n == 1) return n;
int []dp = new int[n + 1];
for (int i = 1; i <= n; i++) dp[i] = 1;
for (int i = 2; i <= n; i++)
for(int j = i-1; j >= 1; j--)
dp[i] += dp[j];
return dp[n];
}
}


我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?




public class Solution {
public int RectCover(int n) {
if (n < 3) return n;
int val = 0;
int first = 1;
int second = 2;
for (int i = 3; i <= n; i++) {
val = first + second;
first = second;
second = val;
}
return val;
}
}



标签:面试题,return,int,斐波,second,那契,data,public,first
From: https://blog.51cto.com/u_11290086/5804060

相关文章