1. 程式人生 > >劍指offer:7.8.9.10.12 (12.27)

劍指offer:7.8.9.10.12 (12.27)

'''
7.斐波那契數列
**題目:**大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項。n<=39。

**題解:**遞迴和非遞迴方法。
'''
class Solition():
    def Fibonacci(self, n):
        #遞推的方法
        if n==0:
            return 0
        if n==1:
            return 1
        Fib=[0 for i in range(n+1)]
        Fib[0]=0
        Fib[1=1
        for i in range(2,n+1):
            Fib[i]==Fib[i-1]+Fib[i-2]
        return Fib[n]
    def Fibonacci(self, n):
        #遞迴的方法
        if n==0:
            return 0
        if n==1 or n==2:
            return 1
        else:
            return self.Fibonacci1(n-1)+self.Fibonacci1(n-2)
if __name__=='__main__':
    solution=Solution()
    n=int(input())
    ans=solution.Fibonacci1(n)
    print(ans)
'''
8.跳臺階
**題目:**一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。

**題解:**ans[n]=ans[n-1]+ans[n-2]
'''
class Solution:
    def jumpFloor(self, n):
        if n==0:
            return 0
        if n==1:
            return 1
        if nu==2:
            return 2
        ans=[0 for i in range(n+1)]
        ans[1],ans[2]=1,2
        for i in range(3,n+1):
            ans[i]=ans[i-1]+ans[i-2]
        return ans[n]

if __name__ == '__main__':
    solution = Solution()
    n=int(input())
    ans=solution.jumpFloor(n)
    print(ans)
'''
9.變態跳臺階
**題目:**一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。

**題解:**ans[n]=ans[n-1]+ans[n-2]+ans[n-3]+…+ans[n-n],ans[n-1]=ans[n-2]+ans[n-3]+…+ans[n-n],ans[n]=2*ans[n-1]。

'''

class Solution:
    def jumpFloorII(self, number):
        
        if number==1:
            return 1
        if number==2:
            return 2
        return 2*self.jumpFloorII(number-1)

if __name__=='__main__':
    solution=Solution()
    n=int(input())
    ans=solution.jumpFloorII(n)
    print(ans)
'''
10.矩形覆蓋
**題目:**我們可以用21的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個21的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法?
'''

class Solution:
    def rectCover(self, number):
        
        if number==0:
            return 0
        if number==1:
            return 1
        Fib=[0 for i in range(0,number+1)]
        Fib[1],Fib[2]=1,2
        for i in range(3,number+1):
            Fib[i]=Fib[i-1]+Fib[i-2]
        return Fib[number]

if __name__=='__main__':
    solution=Solution()
    n=int(input())
    ans=solution.rectCover(n)
    print(ans)
'''
12.數值的整次方
**題目:**給定一個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。
'''

class Solution:
    def Power(self, base, exponent):
       
        ans=1
        for i in range(0,abs(exponent)):
            ans=ans*base
        if exponent>0:
            return ans
        else:
            return 1/ans

if __name__=='__main__':
    solution=Solution()
    base=float(input())
    exponent=int(input())
    ans=solution.Power(base,exponent)
    print(ans)