我在网上发现了一个问题:给定输入大小,打印所有该大小的格式良好的数字。
示例:size = 3 数字:123、234、125 等条件,比如数字是 abc,然后 a < b < c
我正在尝试为此编写一个递归代码,并且由于我很擅长递归,因此无法弄清楚基本情况,或者如何摆脱递归。我有一个想法:
- 我从给定大小的最小格式良好的数字开始(只需用 填充数组
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);
}