【问题标题】:How do this Python Coderbyte function work? [duplicate]这个 Python Coderbyte 函数是如何工作的? [复制]
【发布时间】:2020-02-20 13:44:45
【问题描述】:

问题是将所有从 1 到 num 的数字相加。例如:如果输入是 4,那么你的程序应该返回 10,因为 1 + 2 + 3 + 4 = 10。

这就是我的解决方案

def SimpleAdding(num):
  total = []
  for i in range(1,num+1):
    total.append(i)

 return sum(total)

这是问题的最佳解决方案

def SimpleAdding(num): 
    if num == 1:
      return 1
    else:
      return num + SimpleAdding(num-1)

我想知道这种解决方案如何在没有循环的情况下工作。这对我来说根本没有意义。顺便说一句,我只是一个初学者。

【问题讨论】:

  • 这是递归解决方案,在惯用的python中一般会避免
  • 使用 (N*(N+1))/2
  • 顶级解决方案使用了一个叫做函数递归的东西,基本上你可以初始化一个会一遍又一遍地调用自己的函数
  • 另外请考虑使用snake_case代替CamelCase来命名变量和函数
  • 哦..我不知道有这样的东西

标签: python


【解决方案1】:

这是图表

def SimpleAdding(num): 如果数 == 1: 返回 1 别的: 返回 num + SimpleAdding(num-1)

这是递归

对于 SimpleAdding(5),这正在发生:

1. 5 + SimpleAdding(4)
2. 5 + 4+ SimpleAdding(3) # recall again as no exit condition meet
3. 5+ 4+ 3 + SimpleAdding(2)
4. 5 + 4+ 3+ 2+ SimpleAdding(1)
5. 5+ 4 + 3+ 2+ 1 # finally giving 1 

【讨论】:

  • 哇,我要学这个递归的东西。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-15
  • 2021-07-29
  • 2020-03-09
  • 2011-03-23
  • 1970-01-01
  • 2018-04-22
相关资源
最近更新 更多