【发布时间】:2012-04-21 19:36:13
【问题描述】:
我在网上找到一个问题:给定输入大小,打印所有该大小的格式正确的数字。
示例:大小 = 3 数字:123、234、125 等条件,比如数字是 abc 然后 a
我正在尝试为此编写一个递归代码,因为我对递归很烂,所以无法弄清楚基本情况,或者如何摆脱递归。我有一个想法:
- 我从给定大小的最小格式良好的数字开始(只需用
for loop填充数组)。说 size = 3,我从123开始。然后我继续直到arr[0] == (10 - size))因为这是arr[0]的最大值,因为给定的大小是一个格式良好的数字。
我的函数是printNumbers(int arr[], int size)
但我不确定这是否可行。需要一些关于正确方向的指示。
public void findNumbers(int arr[], int size, int pos)
{
if(arr[0] == (10 - size))
return;
if(arr[pos] == (10 - size + pos))
{
pos--;
findNumbers(arr,size,pos);
}
System.out.println(Arrays.toString(arr));
arr[pos] = arr[pos] + 1;
findNumbers(arr,size,pos);
}
public static void main(String[] args)
{
int size = 3;
int pos = size-1;
int arr[] = new int[size];
for(int i = 0; i<size; i++)
{
arr[i] = i+1;
}
//System.out.println(Arrays.toString(arr));
WellFormed obj = new WellFormed();
obj.findNumbers(arr, size, pos);
}
【问题讨论】:
-
为什么不试试看,然后当你遇到困难时在这里发布你的代码?
-
@DNA:我已经展示了我编写的代码。问题是它在到达
789后并没有停止。无法弄清楚如何break出来。