文字セットから可能なすべての組み合わせを生成する必要があります。
"abcdefghijklmnopqstuvxyz"
生成されたパターンはこのように出力されるはずです。
a
b
...
z
aa
ab
...
az
ba
...
これは 8 の長さで行われますa=>zzzzzzzz
。私は C で例を書くことでこの問題に取り組み、これには再帰関数を使用しました。ざっくばらんに書かれていることは承知していますが、ご理解いただけると幸いです。
#include <stdio.h>
#include <string.h>
#define WIDTH 8
char *charset = "abcdefghijklmnopqrstuvxyz";
void charset_r(int width, int pos, char *s)
{
char buf[WIDTH];
char *p = charset;
while(*p!='\0')
{
strcpy(buf, s);
if(pos<width)
{
strncat(buf, p, 1);
printf("%s\n", buf);
charset_r(width, pos+1, buf);
}
p++;
}
}
int main(void)
{
int i;
for(i=0;i<=WIDTH;i++)
charset_r(i,0,"");
}
私の質問は 2 つあります。
- VHDL で再帰を使用する必要がありますか?
- そうでない場合、どうすれば問題に取り組むことができますか?
アップデート:
したがって、最終的な目標は、コードを合成し、値をクロック付きポートに出力することです。コメントを読んで理解したように、深さ 2 を超える再帰は悪い考えかもしれないので、再帰なしで他の方法で解決するのがおそらく最善です。
再帰以外の方法でこれについて考えるのに苦労しているので(理解できないようです)、ポインタや提案(コードでさえも!)をいただければ幸いです。