我需要编写一个迭代字母(a-z)的函数,如下所示:
(这是a-c的一个例子)
a
b
c
aa
ab
ac
ba
bb
bc
ca
cb
cc
aaa
aab
aac
... and so on. (until the word has 5 characters)
任何想法如何做到这一点?我想我需要一些递归函数。
答案 0 :(得分:9)
无需递归!
for($char = 'a'; $char != 'aaaaaa'; $char++){
echo $char . PHP_EOL;
}
答案 1 :(得分:1)
这是一种快速递归的方式:
function loopchars($maxlvl,$lvlnow,$cstr){
$chars = array(); //put the chaaracters in here
for($i=0;$i<count($chars);$i++){
$uj=$cstr.$chars[$i];
if($lvlnow==$maxlvl){echo $uj.'<br />';}
else{loopchars($maxlvl,$lvlnow+1,$uj);}
}
}
for($i=1;$i<6;$i++){
loopchars($i,1,'');
}
解释:如果没有达到写出的最高级别,它会再次调用自己。它会在循环中添加每个字符。 loopchars($n,1,'');
进行$ n级迭代,因此循环使得每个级别在1到5之间。
答案 2 :(得分:0)
为什么你需要递归呢?它可能是尾递归(这意味着它可以只是在它上面完成)。例如,这是Python中的一个尝试。您已经标记了PHP,因此如果PHP具有类似的库,您可以尝试使用它或在代码中实现相应的函数。
import itertools
mystr = "abcde"
for i in range(1,len(mystr)):
for each in itertools.combinations_with_replacement(mystr,i):
print "".join(each)