谁能帮我转换这段代码,使其递归运行?我不太确定是怎么做到的。这段代码的目的是计算数组中能被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;
诀窍是找出每次循环迭代时发生的变化,并将其传递给递归方法:
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);
}
无需使用递归。您可以简单地检查列表中的每个成员是否能被3整除。然后统计True
的个数。在Mathematica中,这很简单。
a = {1, 2, 3, 4, 5, 6, 9};
Count[Divisible[#, 3] & /@ a, True]
返回:3