python第二次作业2019-03-21

2019-03-21  本文已影响0人  愉快先生
image.png
'''要求能输出第N项,默认输出第10项'''
#这是循环方法:
def fib1(n=10):
    l=range(2,20)
    list=[0,1]
    for i in l:
        list.append(list[i-1]+list[i-2])
    return print(list[n])
fib1(1)


#下面是递归方法:
#很难受,搞了半天,不能在return里面打印,在外面打印。很搞笑,心情复杂
#但是为什么不能 print(fib2(n - 1) + fib2(n - 2)) ???????
def fib2(n=10):
    if n==1:
        return 1
    elif n==2:
        return 1
    return  fib2(n - 1) + fib2(n - 2)
print(fib2(3))


'''第二道题:求阶乘,这里是函数,在test.py中是调用这个函数'''
#循环方法:
def fact1(n):
    if (n == 0 or n == 1):
        return 1
    else:
        product=1
        while n >=2:
            product=product*n * (n - 1)
            n = n - 2
        return product
    #return fact1(n)
print(fact1(1))


#递归写法:
def fact2(n):
    if (n==0 or n==1):
        return 1
    else:
        return n*fact2(n-1)
   # return fact2(n)
print(fact2(1))

上一篇下一篇

猜你喜欢

热点阅读