返回递归方法



为什么在这个递归方法中:

public static int contaCaratteri1(String qq, char bb, int ripp, int poss) {
if (poss > qq.length() - 1) {
return ripp;
} else {
if (bb == qq.charAt(poss)) {
return contaCaratteri1(qq, bb, ripp + 1, poss + 1);
} else {
return contaCaratteri1(qq, bb, ripp, poss + 1);
}
}
}

即使return contaCaratteri1(qq,bb,ripp+1,poss+1);不是int,我也可以返回,但在这个例子中:

public static void palindroma(String k, int i, int j) {
if (i > j && j < i) {
System.out.print("La stringa e' palindroma");
return;
} else {
if (k.charAt(i) == k.charAt(j)) {
return palindroma(k, i + 1, j - 1);
} else {
System.out.print("La stringa NON e' palindroma");
return;
}
}
}

我不能,因为它不是无效的

palindroma函数应该通过递归调用的设计返回boolean,因此它不能具有void返回类型。

此外,当使用return语句来简化代码时,if语句的else部分可能会被删除:

public static boolean palindroma(String k, int i, int j) {
if (null == k) {  // check for null
return false;
}
if (i > j && j < i) {
System.out.print("La stringa e' palindroma");
return true;
}
if (k.charAt(i) == k.charAt(j)) {
return palindroma(k, i + 1, j - 1);
}
System.out.print("La stringa NON e' palindroma");
return false;
}

通常,当我们创建一个函数时,我们会尝试获取一个返回值(return 0(,以查看该函数是否正确终止。编译器中预定义了一些函数或编程语言。(例如:return、void、int、char(

假设我们用C语言编写一个带有声明的简单程序。如

void main(({

}//在这里,不能期望任何值作为返回值。因为您已将函数声明为NULL。

//正如我们所知,这并不意味着程序将不能正确运行或终止,但我们不能在函数末尾写入返回值(因为函数已经声明为NULL/VOID(

假设我们写一个程序在函数完成时不期望返回任何值。它通常作为无效返回

所以Void在编译器中被预定义为NULL,而且Void函数不接受任何参数。

请参考维基百科文章:-

https://en.m.wikipedia.org/wiki/Void_type

最新更新