Я хочу найти в C и Haskell в Composition of Integer я нахожу этот код для Haskell, который работает отлично:состав целого числа в C и Haskell
composition 0 = [[]]
composition n = [x:rest | x <- [1..n], rest <- composition (n-x)]
Пример вывода этого кода:
*Main> composition 3
[[1,1,1],[1,2],[2,1],[3]]
*Main> composition 4
[[1,1,1,1],[1,1,2],[1,2,1],[1,3],[2,1,1],[2,2],[3,1],[4]]
но я не мог разработать эквивалент в C: Я попытался создать рекурсивную функцию в C, но не знаю, как использовать эквивалент Haskell: [] в C
void composition(int n)
{
int j;
if (n==0)
return;
for(j=1;j<=n;j++){
printf ("%d",j);
composition(n-j);
printf("\n");
}
}
образец Выход этого кода:
Composition is
111
2
21
3
Правильная композиция для 3 является
1 1 1
2 1
1 2
3
ваш вопрос немного в замешательстве. О чем именно вы спрашиваете? C или C#? Можете ли вы описать людей, которые не знают Haskell, что выражение: 'генерировать n = [x: rest | x <- [1..n], rest <- generate (n-x)] 'делает? Чем больше информации вы предоставите, тем проще будет отвечать людям на ваш вопрос. –
@LuckAss Добавляю вывод C –
@progy_rock 1) Я знаю, но я не знаю, как это исправить. 2) Я еще не разработал его. , в любом случае я также и не знаю, как создать массив рекурсивным способом, как это было в Haskel с: двоеточие. –