任何人都可以帮我转换此代码以使其以递归方式运行吗? 我不确定如何。 代码的目标是计算数组中的数字量可被k整除。
int[] a = {1,2,3,4,5,6,9}
int k = 3;
int count;
for (int i = 0;i <a.length; i ++){
if (a[i] % 3 == 0){
count ++;
}
}
return count;
答案 0 :(得分:1)
诀窍是找到每个循环迭代的变化,并将其传递给递归方法:
int count(int[] array, int k, int i){
if(i>=array.length)
return 0;
boolean divisible = array[i] % k == 0;
return count(array, k, i+1) + (divisible?1:0);
}
答案 1 :(得分:1)
无需使用递归。您可以简单地检查列表中的每个成员是否可以被3整除。然后计算True
的数量。在Mathematica中,这很简单。
a = {1, 2, 3, 4, 5, 6, 9};
Count[Divisible[#, 3] & /@ a, True]
返回:3