我從像ABCD例如代碼生成所有組合的工作多的回報,24種組合,這一個1 * 2 * 3 * 4如何股價從遞歸函數
我有這樣的功能:
static char *combi_switch(char *code, int i)
{
char *combi;
int j;
int k;
int l;
int s;
combi = (char *)malloc(sizeof(char) * ft_strlen(code) + 1);
ft_strcpy(combi, code);
k = i;
l = i;
j = ft_strlen(code) - 1;
if (i == j)
{
printf("%s\n", combi);
return (combi);
}
while (l <= j)
{
s = combi[i];
combi_switch(map, combi, k + 1, stock);
while (i < j)
{
combi[i] = combi[i + 1];
i++;
}
i = k;
combi[j] = s;
l++;
}
free(combi);
return (NULL);
}
INI通過這個叫:
char *combi_mix(char *code)
{
combi_switch(code, 0);
return (NULL);
}
ft_strlen & & ft_strcpy是一樣的libc中包含的內容。
因此,如果代碼=「ABCD」,那麼這個函數,printf
說明了返回的24個組合。 我去了股票的所有回報可能在char **或鏈表中。
- 有沒有辦法來儲存我所有那些組合?
printf
? - 在遞歸函數中使用「while」循環有問題嗎?
這是我項目的最後一個功能之一,非常感謝你,如果你能幫助我!
不要投malloc'和朋友在C.'的sizeof(焦炭)的'結果簡化程序'是* *定義**產生'1'。使用它沒有意義。而'return'是一個陳述,而不是一個f ** u **選項。不要主張表達。 – Olaf
這是的printf的輸出: ABCD ABDC ACDB ACBD ADBC ADCB BCDA BCAD BDAC BDCA BACD BADC CDAB CDBA CABD CADB CBDA CBAD DABC DACB DBCA DBAC DCAB DCBA – jdavin
將一個新變量引入你可以保存printf結果,就像一個大數組。 – jofel