nidebaba110 2019-04-28 15:36 采纳率: 0%
浏览 382

求助,java用递归算约瑟夫环

图片说明图片说明图片说明

做到了这个样子,怎样能依次输出所有值,而不是只有最后留下来那个数字,求大神帮忙 指点,改改代码。
class HW0426 {
public int joserphRing(int a, int b) {
int n = 0;
if(a == 0){
n = n + a;
return n;
}
else{
n = (joserphRing(a-1, b) + b)%a;
}
return n;
}
}

import java.util.Scanner;

public class TestHW0426 {
public static void main(String[] args) {
int total = 0, step = 0;
Scanner scanner = new Scanner(System.in);
System.out.print("请输入总人数:");
total = scanner.nextInt();
System.out.print("请输入步长值:");
step = scanner.nextInt();
HW0426 j1 = new HW0426();
System.out.print(j1.joserphRing(total,step)+1);
}
}

  • 写回答

1条回答 默认 最新

  • Gosse0405 2023-12-18 16:36
    关注

    给你一份我写的代码

    import java.util.Arrays;  
      
    public class JosephusProblemOptimized {  
        public static void main(String[] args) {  
            int n = 10; // 总人数  
            int m = 3; // 报数的数字  
            System.out.println("出列顺序:");  
            josephus(n, m);  
        }  
      
        public static void josephus(int n, int m) {  
            if (n <= 0) {  
                return;  
            }  
      
            // 使用数组模拟环形结构  
            int[] people = new int[n];  
            for (int i = 0; i < n; i++) {  
                people[i] = i + 1; // 初始化数组,从1开始编号  
            }  
      
            int count = 0; // 记录当前报数  
            int currentIndex = 0; // 当前索引  
            while (n > 0) {  
                count++; // 报数增加  
                if (count == m) { // 如果当前报数是m,则这个人出列  
                    System.out.print(people[currentIndex] + " "); // 输出出列的人的编号  
                    count = 0; // 重置报数  
                    n--; // 总人数减一  
                }  
                currentIndex = (currentIndex + 1) % n; // 移动到下一个人的位置,模拟环形结构  
            }  
        }  
    }
    
    

    有其他疑惑可以私信我

    评论

报告相同问题?

悬赏问题

  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法