为了递归地从字符串中选择五个字符,请遵循以下简单算法:
- 到目前为止,您的方法应该已经填充了一部分,并且在五个字符的排列中需要字符的第一个位置
- 如果需要角色的第一个位置高于5,则说明您已经完成;打印到目前为止的组合,然后返回
- 否则,将每个字符放入排列中的当前位置,然后进行递归调用
这在Java中要短得多:
private static void permutation(char[] perm, int pos, String str) { if (pos == perm.length) { System.out.println(new String(perm)); } else { for (int i = 0 ; i < str.length() ; i++) { perm[pos] = str.charAt(i); permutation(perm, pos+1, str); } }}调用者通过更改以下元素的数量来控制所需的排列长度
perm:
char[] perm = new char[5];permutation(perm, 0, "abcdefghiklimnop");
演示



