擅长:python、mysql、java
<p>在本例中,它将返回None,因为当您的名称已经存在于数据库_id中时,递归方法的第一次执行不会将局部y变量设置为您的返回值。下面是一个例子:</p>
<p>假设数据库_id已经包含“eric1”</p>
<p>makeID('eric')->;x包含在数据库中->;makeID将使用(name,count=2)递归调用,它将返回y,y等于eric2,但它不会被任何东西捕获</p>
<p>简而言之,你应该在第8行加上一个报税表</p>
<p>如果您感兴趣,这里有一个快速的方法来重构您的方法以保持其递归性:</p>
<pre><code>def makeID(name, count=1):
unique_name = str(name + count)
if unique_name not in database_id:
database_id.append(unique_name)
return unique_name
else:
return makeID(name, count+1)enter code here
</code></pre>