python第二次作业2019-03-21

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))

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容