java 排列组合-求大神帮我看看这段代码,打印完“12345”结束for循环后为什么还能继续运行?新手没金币,抱歉!

问题描述

求大神帮我看看这段代码,打印完“12345”结束for循环后为什么还能继续运行?新手没金币,抱歉!
public class Test {

public static void main(String[] args) {    prints(0 0 0 0 0);}public static void prints(int k1int k2int k3int k4int k5){    if(k5!=0){              System.out.println(k1*10000+k2*1000+k3*100+k4*10+k5);    }    for(int i=1;i<=5;i++){        if(k1==0) prints(ik2k3k4k5);        else if(k2==0){             if(i==k1) continue;            else prints(k1ik3k4k5);        }        else if(k3==0){                 if(i==k2||i==k1) continue;            else prints(k1k2ik4k5);        }        else if(k4==0){            if(i==k3||i==k2||i==k1) continue;            else prints(k1k2k3ik5);        }        else if(k5==0){            if(i==k4||i==k3||i==k2||i==k1) continue;            else prints(k1k2k3k4i);        }       }}

}

解决方案

没有贴打印结果,猜测是你这个是不是递归没有控制好,陷入死循环了?

解决方案二:
因为你这是for循环+递归,每个k值都会从1到5循环遍历一遍。如果要递归方式只输出12345
那每个prints后面加上break。比如

 if(k1==0) {                prints(ik2k3k4k5);                break;//只循环一次,跳出。            }else if(k2==0){                 if(i==k1) continue;                else {                    prints(k1ik3k4k5);                    break;                }            }

解决方案三:
你想输出什么,是
00000
00001
00002
....
12345
么?

解决方案四:
因为用了continue循环仍旧运行。改用break试试

解决方案五:
第一次进入for循环后就能输出12345,输出完毕后继续循环

解决方案六:
没看出你这段代码的意图,递归写的有点乱,最好的办法就是单步执行一下,看是不是你想要的

解决方案七:
你在prints()里边一直调prints(),当然死循环啦

解决方案八:
这是一直递归啊,没有判断何时停止,肯定一直递归一直递归一直。。。

解决方案九:
并不是从0枚举到12345,而是每一位从1枚举到5,从而实现全排列。
可以理解为每次只改变当前为0的那一位,并使五个数字不相同。

时间: 2024-08-30 22:39:24

java 排列组合-求大神帮我看看这段代码,打印完“12345”结束for循环后为什么还能继续运行?新手没金币,抱歉!的相关文章

用java开发一个安卓客户端在线交流APP,是怎么实现添加好友的?求大神帮我看看这段代码。

问题描述 用java开发一个安卓客户端在线交流APP,是怎么实现添加好友的?求大神帮我看看这段代码. private void submit() { dialog = ProgressDialog.show(this, "提示", "处理中.."); new AsyncTask() { @Override protected String doInBackground(String... params) { String urlString = AppConstan

ava基础 代码错误-Java新手,求大神帮小弟看看这段代码哪里错了,多谢!!!

问题描述 Java新手,求大神帮小弟看看这段代码哪里错了,多谢!!! class Student { //姓名 private String name; //年龄 private int age; //构造方法 public Student(){ } public Student(String name, int age){ this.name = name; this.age = age; } public String getName(){ return name; } public voi

代码分析-JAVA 求大神帮看下这段代码 怎么修改 救命啊

问题描述 JAVA 求大神帮看下这段代码 怎么修改 救命啊 真心看不懂 public static char[] a(char[] paramArrayOfChar) { char[] arrayOfChar1 = new char[12]; char[] arrayOfChar2 = new char[12]; arrayOfChar2[0] = '?'; arrayOfChar2[1] = '?'; arrayOfChar2[2] = 'o'; arrayOfChar2[3] = '/';

sqlhelper-求大神帮我把这段代码注释下,看不懂啊

问题描述 求大神帮我把这段代码注释下,看不懂啊 SqlParameter[] arParms = new SqlParameter[2]; arParms[0] = new SqlParameter(""@userid"" enamestr); arParms[0].Direction = ParameterDirection.Input; arParms[2] = new SqlParameter(""@right"" Sq

printf-c语言求最小公倍数 求大神帮我理解下这个代码

问题描述 c语言求最小公倍数 求大神帮我理解下这个代码 #includeint main(){? ?int mnik=1;? ?scanf(""%d %d""&m&n);? ?for(i=1;i<=m;i++)? ?{? ? ? ?if(m%i==0 && n%i==0)? ? ? ?{? ? ? ? ? ?k*=i;? ? ? ? ? ?m/=i;? ? ? ? ? ?n/=i;? ? ? ?}? ? ? ?if(m==1 |

编程语言-我要用C++实现这段代码 求大神帮解释下R语言代码的意思

问题描述 我要用C++实现这段代码 求大神帮解释下R语言代码的意思 OrgData=read.csv("DownlinkPower_train.csv",header=T) TestData=read.csv("DownlinkPower_test.csv",header=T) #remove abnormal data, optional //移除异常数据 OrgData = subset(OrgData, OrgData[,1] > 0) TestData

java后台逻辑问题-求大神帮忙解释下这段代码。

问题描述 求大神帮忙解释下这段代码. 这是一个从表添加页面的代码.currentx是当前页数.我想问下 st st1 st2 st3是什么意思,就是split(:):这个方法我不是很清楚什么意思,还有下面的!ss.equals("t") t是什么. 传参什么的我晓得. @RequestMapping("/addProcess.do") public String addProcessMaintenance(String currentx, String ids, S

数据-求大神帮帮我看看这段代码哪里出错了

问题描述 求大神帮帮我看看这段代码哪里出错了 Sub save_in_array(ByVal rs As Data.DataTable, ByVal arr(,) As String, ByVal col As Integer) Dim n As Integer Dim j As Integer Dim i As Integer n = row_number(rs) ' 用来求数据库中有数据的行数,这里的n返回值是3 ReDim arr(n - 1, col - 1) For i = 0 To

哪位大神帮我注释这段代码,最好详细一点(AT89s**与霍尔元件测速报警应用)。有附电路的原理图

问题描述 哪位大神帮我注释这段代码,最好详细一点(AT89s**与霍尔元件测速报警应用).有附电路的原理图 5C #includeunsigned char code table[12]={0xc00xf90xa40xb00x990x920x820xf80x800x900xff0xBF};unsigned char code table2[12]={0x400x790x240x300x190x120x020x780x000x100xff}; sbit CS3020=P1^0;sbit SET=P