java - 将迭代代码转换为递归代码
问题描述
我需要一些有关该功能的帮助。我将在其他函数中使用“val”,但是当我尝试在递归函数中返回值时,只返回 0。我需要在递归函数中创建这个循环对不起我的英语。非常感谢
int val = 0;
for (int i = 0; i < arreglo.length; i++) {
if (arreglo[i] % 2 != 0) {
val++;
}
}
解决方案
这是一个简单的例子:
对于递归的基本情况,您必须提供起始索引和初始值,因此将 0 传递给index
参数,将 0 传递给val
参数:
public class Recursive{
public static int recursive(int[] arreglo, int index, int val) {
if (index == arreglo.length ) {
return val;
} else {
if (arreglo[index] % 2 == 0) {
val++; // increment value - even number
}
return recursive(arreglo, index+1, val);
}
}
public static void main(String []args){
int[] r = {1, 2, 3, 4, 5, 6, 7, 8};
int result = recursive(r, 0, 0);
System.out.println(result); // Outputs 4
}
}
推荐阅读
- node.js - 在 node.js 中检查子文档是否被删除
- google-maps-api-3 - 如何使用经纬度的谷歌知识图获取地点信息?
- python - Python Openpyxl:从对象写入具有多个值的工作表行
- c++ - 为什么我不能创建一个包含 vec3 对象的联合?
- javascript - 如何解决无法在“节点”上执行“removeChild”?
- javascript - React js applicationd不要将数据添加到表中
- android - 在片段 getActivity() 与 mActivity 参考中显示 toast
- swift - 如何将标签栏添加到不在标签栏菜单中的其他页面
- git - 找不到远程存储库 - 但可以在浏览器中访问 Stash
- http - 通过 HTTP 的 VLC HTTP 流总是在 10 秒后停止