关于Java递归遍历数组的问题

图片说明

【递归】今天看这么一个问题,就是传入一个数组和数字,将数组中的所有关于5的倍数的数字替换为新数字,函数头和运行示例已经给出,请问这个用递归怎么写呢?**不能使用循环结构**

public void replaceMutili5(int [] array, int number) {
      replace(0, array, number);
 }
 //递归遍历,index自增
 private void replace(int index, int[] array, int number){
    if(index >= array.length)
        return;
    if(array[index] % 5 == 0)
        array[index] = number;
    replace(++index, array, number);
 }

递归算法,关键是找到区分递归结束的条件和继续调用自身的条件,需要定义两个方法,一个是递归的,另一个是判断最终是否数组无 5 的倍数了。伪代码:

public boolean isNoFiveTimes(int[] arrray) {
  for(int i=0;i<array.length;i++){
        if(array[i]%5==0){
                 // 存在,则继续替换
                    return false;
            }
    }
    // 没有了,可以结束递归的条件
    return true;
}

再写递归算法:

 public void replaceMutili5(int [] array, int number) {
      // 是否能结束递归
            if(isNoFiveTimes(array)){
                return;
            }

            // 替换
            for(int i=0;i<array[i];i++) {
                if(array[i] %5==0){
                        array[i] = number;
                    }
            }

            // 递归
            replaceMutili5(array,number);
 }

要求有点变态,而且是强行为递归而递归。

能不能用全局变量?