Java If条件整数
我想了解这个算法是如何工作的。我有一个类Permute和一个方法Permute,它打印给定数组的所有可能的置换。我尝试了{1,2,3}。当我使用调试器检查时,我不明白如果k==arr.size-1,if语句是如何工作的 当k==1和arr.size==3时,它的计算结果为false;当k==2和arr.size==3时,它的计算结果为trueJava If条件整数,java,if-statement,Java,If Statement,我想了解这个算法是如何工作的。我有一个类Permute和一个方法Permute,它打印给定数组的所有可能的置换。我尝试了{1,2,3}。当我使用调试器检查时,我不明白如果k==arr.size-1,if语句是如何工作的 当k==1和arr.size==3时,它的计算结果为false;当k==2和arr.size==3时,它的计算结果为true 当大小为3时,arr.size-1==2。所以这是一场比赛 当大小为2时,arr.size-1==1,因此它与1不匹配 检查使用的是-1位,因为数组索引从
当大小为3时,arr.size-1==2。所以这是一场比赛 当大小为2时,arr.size-1==1,因此它与1不匹配
检查使用的是-1位,因为数组索引从0开始。因此,一个包含5个元素的数组将变为0,1,2,3,4,大小将等于5。如果您想知道为什么k==arr.size-1从给定的输入返回true或false- 当k==1且arr.size==3时,计算结果为false 这里,如果检查值为1==3-1?。它不相等,因此返回false 当k==2和arr.size==3时,计算结果为true 这里的检查是否为2==3-1?它是相等的,因此返回true。对于arr.size=3,则arr.size-1=2,后者=k=2。
public class Permute
{
static void permute(java.util.List<Integer> arr, int k){
for(int i = k; i < arr.size(); i++){
java.util.Collections.swap(arr, i, k);
permute(arr, k+1);
java.util.Collections.swap(arr, k, i);
}
if (k == arr.size() -1){
System.out.println(java.util.Arrays.toString(arr.toArray()));
}
}
public static void main(String[] args){
Permute.permute(java.util.Arrays.asList(1,2,3), 0);
}
}