C程序设计-递归程序

C程序设计-递归程序,c,recursion,C,Recursion,嘿,伙计们!我被分配了一个程序,这个程序非常简单,代码编写时间也不长,但我无法让它运行。没有打印出来,我想这是因为它进入了一个无休止的循环。我只是想解决这个问题 任务: 编写并测试递归函数 返回 以下递归定义: f(x) = 0 if x <= 0 f(x- 1) + 2 otherwise f(x)=0,如果x在main中定义了阶乘函数,这是不可能的。请将其定义与main()分开,并从main()调用它 希望这能起作用。首先纠正这一点,然后只能做一些事情。您

嘿,伙计们!我被分配了一个程序,这个程序非常简单,代码编写时间也不长,但我无法让它运行。没有打印出来,我想这是因为它进入了一个无休止的循环。我只是想解决这个问题

任务:

编写并测试递归函数 返回 以下递归定义:

f(x) = 0        if x <= 0 
f(x- 1) + 2       otherwise

f(x)=0,如果x在main中定义了阶乘函数,这是不可能的。请将其定义与main()分开,并从main()调用它


希望这能起作用。首先纠正这一点,然后只能做一些事情。

您在main中定义了阶乘函数,这是不可能的。请将其定义与main()分开,然后从main()调用它


希望这能起作用。首先纠正这一点,然后只有一些事情可以做。

我看得不对吗? 为什么会有

f(x)=f(x-1)+2


在你的整数阶乘函数中?

我看得不对吗? 为什么会有

f(x)=f(x-1)+2

在整数阶乘函数中

  • 您已经在main中声明了阶乘

  • 你不是在说阶乘

  • 您已经在main中声明了阶乘

  • 你不是在说阶乘


  • 你想要这样的东西:

    int factorial(int n) {
        //calculate the factorial
        return result;
    }
    
    int main() {
        int result = factorial(10);  // Calculate 10!
        printf("10! is %d", result);
    }
    
    int f( int x ) {
        if( x <= 0 ){
            return /*something*/;
        }else{
            return /*something else*/;
        }
    }
    

    另外,谢谢你坦诚地说这是家庭作业

    你想要这样的东西:

    int factorial(int n) {
        //calculate the factorial
        return result;
    }
    
    int main() {
        int result = factorial(10);  // Calculate 10!
        printf("10! is %d", result);
    }
    
    int f( int x ) {
        if( x <= 0 ){
            return /*something*/;
        }else{
            return /*something else*/;
        }
    }
    

    另外,谢谢你坦诚地说这是家庭作业

    我想这就是你需要的。 #包括 int f(int x)

    int main(无效){
    int结果=f(x);
    printf(“10!是%d”,结果);
    返回0;
    }
    整数f(整数x){
    
    如果(x我想这就是你需要的。 #包括 int f(int x)

    int main(无效){
    int结果=f(x);
    printf(“10!是%d”,结果);
    返回0;
    }
    整数f(整数x){
    
    如果(x,则代码不应按原样编译。在C中不能在另一个函数中定义一个函数,因此需要在
    main()
    之外创建另一个函数,并调用该函数

    我建议您完全删除factorial()函数,因为它似乎与此赋值无关

    程序的基本结构应为:

    #include <stdio.h>
    
    int f(int x)
    {
        //definition of recursive function
    }
    
    int main(void)
    {
        //call to recursive function
        return 0;
    }
    
    #包括
    整数f(整数x)
    {
    //递归函数的定义
    }
    内部主(空)
    {
    //对递归函数的调用
    返回0;
    }
    

    赋值为您提供了递归函数的定义;您只需将其转换为C。

    该代码不应按原样编译。您不能在C中定义一个函数内部的另一个函数,因此您需要在
    main()
    外部创建另一个函数,并调用该函数

    我建议您完全删除factorial()函数,因为它似乎与此赋值无关

    程序的基本结构应为:

    #include <stdio.h>
    
    int f(int x)
    {
        //definition of recursive function
    }
    
    int main(void)
    {
        //call to recursive function
        return 0;
    }
    
    #包括
    整数f(整数x)
    {
    //递归函数的定义
    }
    内部主(空)
    {
    //对递归函数的调用
    返回0;
    }
    

    赋值给出了递归函数的定义;您只需将其转换为C。

    您被要求实现定义为:

    f(x) = 0              if x <= 0 
           f(x-1) + 2     otherwise
    
    通过阅读给出的
    f(x)
    的定义,您可以了解
    /*某物*/
    /*其他*/
    应该是什么

    然后,您被要求“测试”您的实现。您可以通过查看
    f
    main
    函数返回的值来进行测试,该函数如下所示:

    int main(void){
    
        printf("f(1) is %d\n", f(1));
        printf("f(13) is %d\n", f(13));
        /* .. more tests here if you want .. */
    
        return 0;
    }
    

    您被要求实施定义为以下内容的
    f(x)

    f(x) = 0              if x <= 0 
           f(x-1) + 2     otherwise
    
    通过阅读给出的
    f(x)
    的定义,您可以了解
    /*某物*/
    /*其他*/
    应该是什么

    然后,您被要求“测试”您的实现。您可以通过查看
    f
    main
    函数返回的值来进行测试,该函数如下所示:

    int main(void){
    
        printf("f(1) is %d\n", f(1));
        printf("f(13) is %d\n", f(13));
        /* .. more tests here if you want .. */
    
        return 0;
    }
    
    • 您已经在main函数中定义了
      factorial()
      函数。这是不允许的。您需要将整个函数放在main函数之外
    • 你已经做了
      f(x)=f(x-1)+2;
      。这里你在赋值的左边有一个函数是不正确的。我也无法理解这种尝试的原因
    计算递归函数所需的代码为:

    #include <stdio.h>
    
    int main (void)
    {
      int x, y;
      printf ("\nEnter x: ");
      scanf ("%d", &x);
      y = f (x);
      printf ("\n%d\n", y);
      return 0;
    }
    
    int f (int x)
    {
      if (x <= 0)
      {
       return 0;
      }
      else
      {
        return f (x - 1) + 2;
      }
    }
    
    #包括
    内部主(空)
    {
    int x,y;
    printf(“\n输入x:”);
    scanf(“%d”和&x);
    y=f(x);
    printf(“\n%d\n”,y);
    返回0;
    }
    整数f(整数x)
    {
    如果(x
    • 您已经在main函数中定义了
      factorial()
      函数。这是不允许的。您需要将整个函数放在main函数之外
    • 你已经做了
      f(x)=f(x-1)+2;
      。这里你在赋值的左边有一个函数是不正确的。我也无法理解这种尝试的原因
    计算递归函数所需的代码为:

    #include <stdio.h>
    
    int main (void)
    {
      int x, y;
      printf ("\nEnter x: ");
      scanf ("%d", &x);
      y = f (x);
      printf ("\n%d\n", y);
      return 0;
    }
    
    int f (int x)
    {
      if (x <= 0)
      {
       return 0;
      }
      else
      {
        return f (x - 1) + 2;
      }
    }
    
    #包括
    内部主(空)
    {
    int x,y;
    printf(“\n输入x:”);
    scanf(“%d”和&x);
    y=f(x);
    printf(“\n%d\n”,y);
    返回0;
    }
    整数f(整数x)
    {
    如果(x
    #包括
    int fun(浮动i){
    INTP;
    如果(i
    #包括
    int fun(浮动i){
    INTP;
    
    如果(这有一个技巧。它包括缩进代码,使
    {
    }
    中的项目有四(4)个前面有额外的空格。如果您正确缩进代码,您可能会看到您造成的一些问题。在您认为合适的地方添加printf并尝试调试。嗯,将阶乘移动到单独的方法将是一个很好的起点。或者完全删除阶乘,因为它从来没有实际使用过。然后上帝的我认为代码块中的前两行是赋值;也就是说,代码应该看起来像-可能不是递归的好例子,但是