我想創建一個程序,打印每個可能的字符串,並以任意最大長度的字符'a'開始。對於這個例子,我們將使用最大長度爲4.遞歸函數似乎是一個很好的方式來處理這個問題,但是我現在非常困惑,爲什麼遞歸函數不會打印例如「ab」?看起來循環在再次調用遞歸之後不會繼續。C:打印以'a'開始的每個可能的字符串,遞歸函數
int main()
{
char *str = malloc(5* sizeof(char));
str[0] = 'a';
recursive(str, 1);
}
void recursive(char *string, int index)
{
// Max length of 4
if (index > 3)
return;
for(char c = 'a'; c <= 'j'; c++)
{
string[index] = c;
printf("str: %s\n", string);
recursive(string, index + 1);
}
}
雖然結果是接近我想要的東西,注意有沒有「AB」,「AC」,「ABC」,「ACB」,長度爲2或3(除AA基本上所有字符串/ AAA)。長度4(最大)的每個組合都被打印。
什麼辦法解決呢?謝謝!
你'aabj'和印刷至少兩次'aacj',所以是你必須調試別的東西。 –