Java 为什么是';是不是我的程序找到了佩格纸牌的解决方案并一直运行?

Java 为什么是';是不是我的程序找到了佩格纸牌的解决方案并一直运行?,java,Java,我想写一个程序来解决佩格纸牌,并做了一个 几乎 可呈现程序(“几乎”,因为我已将步骤存储在3D中 要打印的数组,但由于我的程序从未结束,所以我还没有编写该部分)。我 *确保递归在32次之后结束,但仍然继续。 我使用了调试器,但前几个递归的工作似乎很好(当然) 课程 检查每件事太多了)。我的程序尝试各种组合 属于 移动弹珠来解决游戏。有人,请帮忙找出错误! (不要介意用于调试的代码) import java.util.*; 第二类 { 静态字符a[][]; 最终静态int n=7; 静态int m

我想写一个程序来解决佩格纸牌,并做了一个 几乎 可呈现程序(“几乎”,因为我已将步骤存储在3D中 要打印的数组,但由于我的程序从未结束,所以我还没有编写该部分)。我 *确保递归在32次之后结束,但仍然继续。 我使用了调试器,但前几个递归的工作似乎很好(当然) 课程 检查每件事太多了)。我的程序尝试各种组合 属于 移动弹珠来解决游戏。有人,请帮忙找出错误! (不要介意用于调试的代码)

import java.util.*;
第二类
{
静态字符a[][];
最终静态int n=7;
静态int max=0;
发现静态布尔值;
公共静态void Do(int c、char temp[]]、char b[]]
{
如果(找到)
返回;
如果(一个大理石(温度))
{
a=b;
发现=真;
System.out.println(“找到答案”);
返回;
}
如果(c==33)
返回;
int d[][]=空(温度)的坐标;
对于(int i=0;i1)
{
如果((temp[(d[i][0])-1][(d[i][1])]='O')&(temp[(d[i][0])-2][(d[i][1])]='O'))
{
字符temp3[][]=新字符[n][n];

对于(int j=0;j,据我所知,您的代码工作正常。我猜您最大的问题是时间。您的程序“永不结束”,因为“33洞钉接龙”有187636299种您可以遇到的不同游戏模式()(其中许多模式不止一次),因此它似乎永远不会结束

你的:

我猜你的意思是说:“我已经确定递归在32次之后结束,但它仍然在继续。”从“c”开始,什么都没有变大。据我所知,每次递归达到更深层次时,“c”都会增加。当从“c”开始删除一个片段时,它就会增加从1开始,有32块,当没有剩余块时,将达到33块

最大“最大值”达到30,因为它通常会因缺少可能的移动而停止,只剩下3块。要找到解决方案,只需要很多时间。如果您从一个更简单的模式开始,只需要一个视图移动即可在相当短的时间内完成程序

要仅打印解决方案,请尝试在以下位置打印温度:

if (oneMarble(temp))
{
    a = b;
    found = true;
    System.out.println("Found answer.");
    return;
}

我猜你的意思是“应该用一块大理石打印一块板(在调试期间)。”

我认为这更好,herre:@AmirSchnell-不,不是。要求调试帮助的问题将被拒绝。你知道你可以在代码中添加注释吗?
if(c==33)
    return;
if (oneMarble(temp))
{
    a = b;
    found = true;
    System.out.println("Found answer.");
    return;
}