【问题标题】:How can I sum of two number factoriel recursivley?如何递归地对两个数字阶乘求和?
【发布时间】:2020-08-22 20:15:38
【问题描述】:

我想使用递归计算两个数字的阶乘之和:

#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) 函数。我无法添加其他功能。
另外,我必须使用sayi1sayi2 参数。

【问题讨论】:

  • 您想对两个数的阶乘求和?让单阶乘先起作用怎么样?
  • 你不需要flag或者计算两次值

标签: c recursion factorial


【解决方案1】:

将您的函数名称更改为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));

}

【讨论】:

    【解决方案2】:
    int faktoriyel (int sayi,int sayi2)
    {
            if (sayi == 1 || sayi == 0 )
                    return 1;
            else
                    return (sayi * faktoriyel(sayi-1))+(sayi2*faktoriyel(sayi2-1));
    }
    

    您首先将函数定义为采用 2 个参数...然后您使用 1 个单个参数进行递归(两次)。
    也许你需要两个函数??

    【讨论】:

    • int faktoriyel (int sayi,int sayi2) 我只能使用这个函数。另外我必须在一个函数中使用 2 个参数 sayi,sayi2。
    • 那么,faktoriyel(2, 3) 的值应该是多少?和faktoriyel(3)?
    猜你喜欢
    • 2015-04-19
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    • 2014-02-12
    • 2018-04-08
    • 2011-02-14
    • 2015-04-16
    • 2016-01-28
    相关资源
    最近更新 更多