# 斐波那契数列
解法一:
classSolution:defFibonacci(self, n):if n ==0or n ==1:return n
fi_list =[]
fi_list.extend([0,1])if n>1:for i inrange(2, n +1):
fi_list.append(fi_list[i -1]+ fi_list[i -2])return fi_list[-1]returnNone
解法一优化:
classSolution:defFibonacci(self, n):if n ==0or n ==1:return n
a=1
b=0if n>1:for i inrange(2, n +1):
ret=a+b
b=a
a=ret
return fi_list[-1]returnNone
解法二 # 递归解法,会超出时间限制classSolution:defFibonacci(self, n):if n ==0or n ==1:return n
if n>1:return self.Fibonacci(n-1)+self.Fibonacci(n-2)returnNone
# 1,2,3,5
解法一:在等于78之后发生错误,原因可能是溢出
classSolution:defjumpFloor(self, number):
num_jump =1for x inrange(number +1):for y inrange(int(number /2)+1):if(x +2* y)== number:if x ==0or y ==0:
num_jump +=1else:
num_jump+=self.je_cheng(x+y)/self.je_cheng(x)/self.je_cheng(y)returnint(num_jump)defje_cheng(self, num):
a =1for i inrange(1, num +1):#184550589
a *= i
return a
解法二:斐波那契数列
classSolution:defjumpFloor(self,number):if number<1:return0if number==1or number==2:return number
a=1
b=2
ret=0for i inrange(3,number+1):
ret=a+b
a=b
b=ret
return ret
变态青蛙跳台阶:
一只青蛙一次可以跳n级台阶,求该青蛙跳上一个n级台阶总共有多少种跳法
11223448 n 2^(n-1)
解法一:
classSolution:defjumpFloorII(self,number):returnpow(2,number-1)
解法二:
classSolution:defjumpFloorII(self,number):#f(n)=f(n-1)+f(n-2)+...+f(1)#f(n-1)=f(n-2)+...+f(1)#f(n)=2f(n-1) n>1#f(1)=1 n=1if number ==1:return1
ret=1
a=1for i inrange(2,number+1):
ret=2*a
a=ret
return ret