如何递归迭代一个字母表


How to recursively Iterate an alphabet?

我需要写一个函数,它遍历字母表(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)

知道怎么做吗?我想我需要一些递归函数。

不需要递归!

for($char = 'a'; $char != 'aaaaaa'; $char++){
    echo $char . PHP_EOL;
}

这是一种快速递归的方法:

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之间。

为什么需要递归?它可以是尾部递归的(这意味着它可以迭代完成)。例如,下面是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)