我用Python编写了这个递归代码:
def suma(i,l):
if i == 0:
return l[i]
else:
return suma(i-1,l)+l[i]
每当我通过suma(3,[7,2,3])
调用该函数并运行它时,我会收到以下错误消息:
列表索引超出范围返回suma(i-1,l)+ l [i]
答案 0 :(得分:0)
这是非正统的,但你可以用第一个参数减1来调用你的suma()
函数:
>>> l = [7, 2, 3]
>>> suma(len(l)-1, l)
12
但它可以更好地写成:
def suma(l):
if len(l) > 1:
return suma(l[:-1]) + l[-1]
return l[0]
>>> suma([7,2,3])
12
>>> suma(range(1,11))
55
这样做的好处是不需要将列表的长度传递给sum函数 - 使用len()
始终可以获得长度。
答案 1 :(得分:0)
好的,我将假设这里的意图是以递归方式添加 File folder = new File("C:\my path");
File[] listOfFiles = folder.listFiles();
if (folder.isDirectory()){
if(folder.list().length>0){
System.out.println("Directory is not empty!");
}
else {
System.out.println("Directory is empty!");
return; //I need to return from the main method
}
}
else{
System.out.println("Invalid directory!");
}
的第一个i
元素并返回结果。如果是这样,这里有一个简洁的方法:
l
这相当于:
def suma(i,l):
return 0 if i == 0 else suma(i-1,l)+l[i-1]