劍指offer-題9:斐波那契數列
阿新 • • 發佈:2019-01-27
題目描述
題目一:大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項。n<=39
題目二:一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法。
實驗平臺:牛客網
題目一
在牛客網上,這題只允許迴圈解答,用遞迴會報stackoverflowerror異常,即棧溢位。可以知道遞迴的效率是很低的,時間複雜度是呈指數增長的。
java:
public class Solution {
public int Fibonacci(int n) {
int fibonacci1 = 0;
int fibonacci2 = 1;
int fibonacci = 0;
if (n == 0) {
return fibonacci1;
}else if (n==1) {
return fibonacci2;
} else {
for (int i = 2; i <= n; i++) {
fibonacci = fibonacci1 + fibonacci2;
fibonacci1 = fibonacci2;
fibonacci2 = fibonacci;
}
return fibonacci;
}
}
}
python:
# -*- coding:utf-8 -*-
class Solution:
def Fibonacci(self, n):
# write code here
fibonacci1 = 0
fibonacci2 = 1
if n == 0:
return 0
elif n == 1:
return 1
else:
for i in range(2 , n+1):
fibonacci = fibonacci1 + fibonacci2
fibonacci1 = fibonacci2
fibonacci2 = fibonacci
return fibonacci
題目二
解決思路
java:
public class Solution {
public int JumpFloor(int target) {
int sum1 = 1;
int sum2 = 2;
int sum = 0;
if (target == 1) {
return sum1;
} else if (target == 2) {
return sum2;
} else {
for (int i = 2; i < target; i++) {
sum = sum1 + sum2;
sum1 = sum2;
sum2 = sum;
}
return sum;
}
}
}
python:
照的之前的稍作改動即可