我已经在这个问题的解决方案上纠结了一段时间,我写了一段代码,可以按要求工作,但在编译结束时,我似乎得到了一个错误
You need to design an iterative and a recursive function called replicate_iter and replicate_recur respectively which will receive two arguments: times which is the number of times to repeat and data which is the number or string to be repeated.
The function should return an array containing repetitions of the data argument. For instance, replicate_recur(3, 5) or replicate_iter(3,5) should return [5,5,5]. If the times argument is negative or zero, return an empty array. If the argument is invalid, raise a ValueError.
我的代码如下:
def replicate_iter(times,data):
emptyArray = []
if not isinstance(data, int) and not isinstance(data, str):
raise ValueError
if times <= 0:
print emptyArray
if not isinstance(times,int):
raise ValueError
else:
while times > 0:
emptyArray.append(data)
times -= 1
return emptyArray
array = []
def replicate_recur(times,data):
if not isinstance(data,int) and not isinstance(data,str):
raise ValueError
if not isinstance(times,int):
raise ValueError
if times <= 0 and len(array) != 0:
return array
elif times <= 0 and len(array) <=0:
return []
else:
array.append(data)
replicate_recur(times - 1,data)
请协助提出建议
错误消息:
首先,想想这个:
现在,关于递归解决方案,(1)为了访问”,因为变量
array
,replicate_recur
在开始时需要声明“^{array
是在函数作用域之外声明的;(2)将递归调用“replicate_recur(times - 1,data)
”修改为“return replicate_recur(times - 1,data)
”,以便函数在times
时实际返回一个值大于零。一般认为递归函数的形式是不可取的根据你给出的例子,也许这就是你想要的:
不能使用全局变量。第二次调用函数会导致错误的结果。请改用内部函数或可选参数。在
相关问题 更多 >
编程相关推荐