python递归没有按预期工作

时间:2017-09-12 13:01:51

标签: python-2.7 recursion

我是编码的新手,并试图通过构建一个非常简单的函数来自学有关递归的方法。但是,我的代码表现与我的预期略有不同:

获取不得大于50的用户输入数

def getinput():
  input = int(raw_input("type number under 50 >>> "))
  if input < 50:
    return input
  else:
    print input, "no, must be under 50"
    getinput()

print getinput()

这会导致以下行为:

此位如预期

C:\ Python27&gt; python recur.py

50以下的类型编号&gt;&gt;&gt; 23

23

这意外

C:\ Python27&gt; python recur.py

50以下的类型编号&gt;&gt;&gt; 63

63不,必须低于50

50以下的类型编号&gt;&gt;&gt; 23

我的问题是,为什么最后一行是“无”,而不是23?如果用户输入数字50或更大,我的代码似乎再次正确调用该函数,但为什么第二个调用不返回23(与初始输出相同)?

任何建议非常感谢

3 个答案:

答案 0 :(得分:0)

如果数字大于50,则不会返回getInput()的结果

def getinput():
input = int(raw_input("type number under 50 >>> "))
  if input < 50:
    return input
  else:
    print input, "no, must be under 50"
    return getinput() 

print getinput()  

答案 1 :(得分:0)

你在其他情况下错过了return。以下代码应该有效:

def getinput():
  input = int(raw_input("type number under 50 >>> "))
  if input < 50:
    return input
  else:
    print input, "no, must be under 50"
    return getinput()

print getinput()

答案 2 :(得分:0)

在这种情况下,您的函数将返回$(".dz-select-system").change(function() { var $this = $(this); var $parent = $this.parent(); var fileFormat = $this.val(); var fileName = $parent.find('.dz-filename span').text(); $parent.find('#fileNameWithFormat').val(fileName + '::' + fileFormat); });

input

您正在使用递归,因此它就像最后的堆栈一样,所有返回值都将返回到被调用的函数。如果条件if input < 50: return input 不满意,则会返回,并且您正在使用if input < 50

print(getinput())

这只是我对递归的理解。

所以当值大于50时,请向函数返回一个值而不是None。

| 23  |
| 63  | -> None
 -----

另请使用不同的变量名称而不是return getinput()