You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

递归打印指定长度二进制数的Java代码重复输出问题排查

递归打印二进制数问题修复

错误原因

重复输出是代码中存在多余的外层位置遍历循环导致的:你的递归逻辑已经通过index参数控制当前要赋值的二进制位,不需要额外加for(int i =index;i<k;i++)循环遍历位置,这层循环会导致同一位被多次触发赋值逻辑,最终产生重复结果。

修正后代码

import java.util.Arrays;

public class PrintBinaryNum {
    
    public static void printBinary(int num[], int k, int index) {
        // 递归终止条件:所有位都赋值完成
        if(index == k) {
            System.out.println(Arrays.toString(num));
            return;
        }
        // 只处理当前index位置的取值,不需要循环遍历位置
        for(int j=0;j<=1;j++) {
            num[index] = j;
            // 递归处理下一位
            printBinary(num, k, index+1);
        }
    }

    public static void main(String[] args) {
        int a[] = new int[2];
        printBinary(a, 2, 0);
    }
}

输出结果

运行修正后代码,k=2时的输出为:

[0, 0]
[0, 1]
[1, 0]
[1, 1]

没有重复结果,符合预期。

内容的提问来源于stack exchange,提问作者Sameer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 04:24:02