【发布时间】:2016-06-04 15:16:16
【问题描述】:
给定一个类密码,所有密码只能用英文字母的小写字母编写,我想编写一个算法,通过遍历所有可能的密码来递归地找到密码长度。
Password 类有一个方法public boolean isPassword(String st),它比较给定的密码 p 和字符串 st 并返回它们是否相等的布尔值。
让我们将此方法称为public static String findPassword(Password p, int length)。
我的想法是在两个递归调用中执行此操作 - 一个持续 p 的长度,并使用方法 charAt(i) 在字符串 alphabet="abcd.....z" 上不断添加字母表中的字符,直到它同时获得一个字符串长度为 p(表示长度)。
第二次递归调用将通过每次更改它添加到前一个字符串的字母来创建新字符串。例如,给定一个长度为L 的字符串st,我们将首先添加字母a,然后添加字母b,依此类推,直到我们到达z,从长度为L 的字符串移动到长度@ 987654328@.
我目前的问题是将其中一些想法转换为代码,我想在没有任何 for 循环的情况下执行此操作。
【问题讨论】:
-
您应该展示一个带有示例输入和预期输出的示例。
-
是的,我同意。我发现要准确理解您的功能应该做什么有点困难。您还在标题中说“比较”,但在实际问题中却没有。您是否尝试生成包含字母表每个排列的所有长度为 n 的字符串?
-
关于你的编辑,如果你不知道你的程序将接受什么输入以及它应该输出什么,那么你怎么知道你在做什么以及什么时候完成,因为你不知道不知道输出应该是什么?这是没有意义的。再想一想;-)
-
通过示例输出我们的意思是:函数应该返回什么例如
n=3。您说:“它创建了所有长度为 n 的字符串,其中包含所描述的字母表”,所以您想输出一组字符串?只有一根弦?另外,我似乎找不到as described部分 -
您确实意识到您将获得 LOT 的输出,对吗?字符串的数量是
26^n,所以676对应于n=2,17,576对应于n=3,456,976对应于n=4,11,881,376对应于n=5,并且从那里开始变得更糟。