我是编码的新手,并试图通过构建一个非常简单的函数来自学有关递归的方法。但是,我的代码表现与我的预期略有不同:
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(与初始输出相同)?
任何建议非常感谢
答案 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()
。