剑指offer--递归与循环
程序员文章站
2022-04-07 12:33:42
...
题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39
# -*- coding:utf-8 -*-
class Solution:
def Fibonacci(self, n):
# write code here
if n == 0:
return 0
if n == 1:
return 1
f0, f1 = 0, 1
while n-1:
f0, f1 = f1, f0+f1
n -= 1
return f1
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)
# -*- coding:utf-8 -*-
class Solution:
def jumpFloor(self, number):
# write code here
f0, f1 = 1, 2
while number-1:
f0, f1 = f1, f0+f1
number -= 1
return f0
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
# -*- coding:utf-8 -*-
class Solution:
def jumpFloorII(self, number):
# write code here
n = number
b = []
if n <= 2:
return n
else:
return pow(2, n-1)
题目描述
我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
比如n=3时,2*3的矩形块有3种覆盖方法:
# -*- coding:utf-8 -*-
class Solution:
def rectCover(self, number):
# write code here
a, b = 1, 2
if number == 0:
return 0
while number-1:
a, b = b, a+b
number -= 1
return a
注:题目转自牛客
上一篇: 【算法】递归与while循环的区别
下一篇: 网站降权掉排名恢复的几种方法介绍