python 阶乘与斐波那契

(一) 写一个函数,接收一个参数,用来返回这个函数的阶乘并输出

def factorial(n):
    if n == 1:
        return 1
    return factorial(n-1) * n


n = int(input('计算几的阶乘呢?请输入:\n'))
result = factorial(n)
print('结果是:', result)

结果: 

计算几的阶乘呢?请输入:
5
结果是: 120

(二)写一个函数实现斐波那契数列
(1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377......)
要求:接收一个参数,返回一个存着等量值的列表

(1)带 第一个1的版本(效率最好):

def fib(max):
    n, a, b = 0, 0, 1
    while n < max:
        a, b = b, a + b
        n = n + 1
        print(a, end=' ')


num = int(input('想要几个斐波那契数?请输入:'))
fib(num)

结果:

 (二)不带第一个 1 的版本(效率最低):

def func(n):
    if n == 1:
        return 1
    elif n == 2:
        return 2
    else:
        return func(n-2) + func(n-1)


count = int(input('想要几个菲波那切数?请输入:\n'))
a = 1
while a <= count:
    print(func(a), end=' ')
    a += 1

结果:

想要几个菲波那切数?请输入:
10
1  2  3  5  8  13  21  34  55  89  

 

其他方法(添加到列表,再输出):

lst = [1, ]
def func(num, a=1, b=2):
    if num < 2:
        return
    else:
        lst.append(b)
        func(num - 1, b, a + b)


func(5)
print(lst)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值