计算阶乘-递归-循环-公式

╰半夏微凉° 2023-09-27 09:56 162阅读 0赞

1.写一个计算阶乘的函数,用不同的方式实现

  1. # -*- coding: utf-8 -*-
  2. # @Author : Codeooo
  3. # @Time : 2020/01/15
  4. """
  5. 1.写一个计算阶乘的函数,用不同的方式实现
  6. """
  7. def factorial(number):
  8. count = 1
  9. if number < 0:
  10. print('负数没有阶乘!')
  11. elif number == 0:
  12. print('0的阶乘为1!')
  13. else:
  14. for i in range(1, number + 1):
  15. count *= i
  16. return count
  17. print(factorial(6))
  18. def factorialSeries(number):
  19. if number == 0:
  20. return 1
  21. else:
  22. return number * factorialSeries(number - 1)
  23. print(factorialSeries(6))

2.一个人上台阶,一次可以走一步或者两步,上完100个台阶的走法有多少种

  1. # -*- coding: utf-8 -*-
  2. # @Author : Codeooo
  3. # @Time : 2020/01/15
  4. """
  5. 2.一个人上台阶,一次可以走一步或者两步,上完100个台阶的走法有多少种
  6. """
  7. # 解法一:递归思想
  8. # 如果当前跳了一阶,还剩余n-1阶
  9. # 如果当前跳了两阶,还剩余n-2阶
  10. # 分别对n-1阶与n-2阶求次数,再相加
  11. # def jumpFloor(number):
  12. # if number in (1, 2):
  13. # return number
  14. # return jumpFloor(number - 1) + jumpFloor(number - 2)
  15. #
  16. # print(jumpFloor(100))
  17. # 解法二:循环实现,避免阶数过大造成时间超限
  18. def jumpFloor(number):
  19. if number == 1 or number == 2:
  20. return number
  21. n, m = 1, 2
  22. for i in range(number - 2):
  23. result = m + n
  24. n, m = m, result
  25. return result
  26. print(jumpFloor(100))
  27. # 解法三:公式
  28. # 设n级台阶,跳了z次,x次跳一阶,y次跳两阶。
  29. # >>> z = x + y
  30. # >>> n = 2*x + y
  31. # @param {integer} n
  32. # @return {integer}
  33. def climbStairs(n):
  34. def fact(n):
  35. result = 1
  36. for i in range(1, n + 1):
  37. result *= i
  38. return result
  39. total = 0
  40. # for i in range(n/2+1): # float不能作为range的参数
  41. for i in range(n // 2 + 1):
  42. total += fact(i + n - 2 * i) / fact(i) / fact(n - 2 * i)
  43. return total
  44. print(climbStairs(100))

发表评论

表情:
评论列表 (有 0 条评论,162人围观)

还没有评论,来说两句吧...

相关阅读