在不使用另一个数组的情况下反转数组
Reversing an array without using another array
我一直在尝试使用两个数组进行此操作,并且成功了,但就地反转让我有点困惑。如果你能帮忙,那就太好了
public class reverseOfAnArray {
int[] reverseCal(int arr[]){
int i,j=0;
for (i=arr.length;i>0;i--,j++){
arr[j]=arr[i-1];
}
return arr;
}
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int size,i=0;
System.out.println("enter the size of your array");
size=scan.nextInt();
int originalArray[]=new int[size];
System.out.println("Enter the elemets in the array");
for (i=0;i<size;i++){
originalArray[i]=scan.nextInt();
}
reverseOfAnArray cal=new reverseOfAnArray();
System.out.println("reverse of the given array is
\n"+Arrays.toString(cal.reverseCal(originalArray)));
}
}
你的问题是,当你找到第一个不是 a
的约数的数字时,你正在停止递归,所以在 28
的情况下,你在 [=13] 时完成递归=] 达到 3,错过了 28 的大部分除数(4、7 和 14)。
即使 a % comingdivisor != 0
:
也进行递归调用
class perfectNumber {
int sum=0;
Integer perfectNumberCal(int a,int comingdivisor) {
if (comingdivisor<=a/2) {
if (a % comingdivisor == 0) {
sum += comingdivisor;
System.out.println(sum);
}
return perfectNumberCal(a,comingdivisor+1);
}
return sum;
}
}
我一直在尝试使用两个数组进行此操作,并且成功了,但就地反转让我有点困惑。如果你能帮忙,那就太好了 public class reverseOfAnArray {
int[] reverseCal(int arr[]){
int i,j=0;
for (i=arr.length;i>0;i--,j++){
arr[j]=arr[i-1];
}
return arr;
}
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int size,i=0;
System.out.println("enter the size of your array");
size=scan.nextInt();
int originalArray[]=new int[size];
System.out.println("Enter the elemets in the array");
for (i=0;i<size;i++){
originalArray[i]=scan.nextInt();
}
reverseOfAnArray cal=new reverseOfAnArray();
System.out.println("reverse of the given array is
\n"+Arrays.toString(cal.reverseCal(originalArray)));
}
}
你的问题是,当你找到第一个不是 a
的约数的数字时,你正在停止递归,所以在 28
的情况下,你在 [=13] 时完成递归=] 达到 3,错过了 28 的大部分除数(4、7 和 14)。
即使 a % comingdivisor != 0
:
class perfectNumber {
int sum=0;
Integer perfectNumberCal(int a,int comingdivisor) {
if (comingdivisor<=a/2) {
if (a % comingdivisor == 0) {
sum += comingdivisor;
System.out.println(sum);
}
return perfectNumberCal(a,comingdivisor+1);
}
return sum;
}
}