Код разложения числа на слагаемые: Too few arguments to function - C (СИ)
Формулировка задачи:
Здравствуйте! есть такой код разложения числа на слагаемые.
проблема в том что при компиляции выскакиевает следующая ошибка: Too few arguments to function...я так понимаю как-то неправильно передаю параметры в функцию...посмотрел темы с такой проблемой..пока не нашел..подскажите пожалуйста что нужно исправить?
#include <stdio.h>
int a[100];
void dec( int g, int n, int k, int i) {
if ( n < 0 ) return;
if ( n == 0 ) {
int j;
for (j = 0; j < i; j++) {
printf("%d ", a[j]);
}
printf("\n");
} else {
if ( n - k >= 0) {
a[i] = k;
dec(n - k, k, i + 1);
}
if ( k - 1 > 0) {
dec(n, k - 1, i);
}
}
return;
}
int main() {
int m, i,t;
scanf("%d", &m);
for (i = 0; i <= m; i++) {
a[i] = 0;
}t=m;
dec( m, m, m, 0);
return 0;
}Решение задачи: «Код разложения числа на слагаемые: Too few arguments to function»
textual
Листинг программы
} else {
if ( n - k >= 0) {
a[i] = k;
dec(n - k, k, i + 1);//тут 3 а в объявлении 4!
}
}
if ( k - 1 > 0) {
dec(n, k - 1, i);//и тут 3
}
}
return;
}
Объяснение кода листинга программы
Список элементов:
- В данном коде реализуется рекурсивный алгоритм разложения числа на слагаемые.
- Если число
nменьше или равноk, то в массивaзаписываетсяk, а функция вызывается рекурсивно с уменьшенным числомnи уменьшенным значениемk. - Если число
nбольшеk, то в массивaзаписываетсяk, а функция вызывается рекурсивно с уменьшенным числомnи уменьшенным значениемk. - Если число
kменьше или равно 0, то в массивaзаписывается 0, а функция вызывается рекурсивно с уменьшенным числомnи уменьшенным значениемk. - Если число
kбольше 0, то в массивaзаписываетсяk, а функция вызывается рекурсивно с уменьшенным числомnи уменьшенным значениемk.