java - 返回递归方法
问题描述
为什么在这种递归方法中:
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
返回类型。
此外,当使用语句简化代码时,可能会删除else
部分语句:if
return
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;
}
推荐阅读
- visual-studio - 使用“vsixsigntool”签署visual studioextension时出错
- c# - “?”是什么意思?在 C# 中的方法之前执行
- python - 对新手的 Python 编码帮助
- c# - 在字符串中查找/替换的问题
- java - 如何在 MVC 应用程序中使用 @Version 注释?
- javascript - 如何将数据属性值传递给地图函数之外的另一个函数?
- python - 在 swig 接口文件中未调用 C++ 析构函数
- mysql - rmysql - 错误:无法初始化未知字符集
- node.js - 当 ReactJS 中的 URL 不匹配时如何返回 404 状态码
- sql - SQL 子查询:每个 GROUP BY 表达式必须包含至少一列不是外部引用