Как я могу суммировать два рекурсивных фактора множителя? - PullRequest
0 голосов
/ 07 мая 2020

Я хочу вычислить сумму факториала двух чисел с помощью рекурсии:

#include <stdio.h>

int faktoriyel(int t, int k);

int main ()
{
    int sayi, k, flag, t;

    scanf("%d", &t);
    scanf("%d", &k);
    flag = faktoriyel(t, k);    
    printf("%d", faktoriyel(t, k));
    return 0;
}

int faktoriyel(int sayi, int sayi2)
{
    if(sayi == 1 || sayi == 0)
       return 1;
    else
       return (sayi * faktoriyel(sayi-1)) + (sayi2 * faktoriyel(sayi2-1));
}

Я пробую эту форму, но этот код не может аргументировать. Как это исправить?
Я должен использовать функцию faktoriyel(int sayi, int sayi2). Я не могу добавлять другие функции.
Также я должен использовать параметры sayi1, sayi2.

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Измените имя вашей функции на faktoriyel2, затем создайте новую функцию для вычисления факториала одного числа:

#include <stdio.h>

int faktoriyel(int n);
int faktoriyel2 (int t,int k);

int main ()
{
    int k,t;
    scanf("%d",&t);
    scanf("%d",&k);

        printf("%d", faktoriyel2(t,k));
        return 0;
}

int faktoriyel(int n)
{
    if (n <= 1)
      return 1;
    else
      return n * faktoriyel(n - 1);
}

int faktoriyel2 (int sayi,int sayi2)
{

        if (sayi == 1 || sayi == 0 )
                return 1;
        else
                return (sayi * faktoriyel(sayi-1))+(sayi2*faktoriyel(sayi2-1));

}
0 голосов
/ 07 мая 2020
int faktoriyel (int sayi,int sayi2)
{
        if (sayi == 1 || sayi == 0 )
                return 1;
        else
                return (sayi * faktoriyel(sayi-1))+(sayi2*faktoriyel(sayi2-1));
}

вы сначала определяете функцию как принимающую 2 параметра ... но позже вы выполняете рекурсию (дважды) с одним аргументом.
Может быть, вам нужны две функции ??

...