C 递推函数方程

C 递推函数方程,c,recursion,C,Recursion,预先警告,这是一个家庭作业。 我应该创建一个递归函数,但我做错了。当我输入4时,我应该从f(x)得到16的结果,但是我得到-2。我真的不明白我哪里出错了。我也不知道我应该把结果打印在main还是f中 编写一个程序,向用户查询整数值并使用递归 函数,该函数返回以下递归定义的值: f(x)=x+3如果x作为生活的学生,我总是愿意帮助一位学者: 您的代码有一些错误,值得注意: intf(intx)没有返回语句,即使它需要一个整数。我假设您希望返回程序的结果(请参阅第3期) 执行f(n)两次。首先是第1

预先警告,这是一个家庭作业。 我应该创建一个递归函数,但我做错了。当我输入4时,我应该从f(x)得到16的结果,但是我得到-2。我真的不明白我哪里出错了。我也不知道我应该把结果打印在main还是f中

编写一个程序,向用户查询整数值并使用递归

函数,该函数返回以下递归定义的值:


f(x)=x+3如果x作为生活的学生,我总是愿意帮助一位学者:

您的代码有一些错误,值得注意:

  • intf(intx)
    没有返回语句,即使它需要一个整数。我假设您希望返回程序的结果(请参阅第3期)

  • 执行f(n)两次。首先是第12行,然后是第16行<代码>printf(“f(x)是%d\n”,f(n))
  • 实际执行F(n)以接收其返回值以与%d格式说明符关联

  • 您没有为任何整数指定
    x+3
    f(x-3)+(x+5)
    。这些语句不保存需要返回的f(x)的返回值

  • 此链接可能对您有所帮助:

    请特别注意函数的输出是如何捕获的


    希望这对你有所帮助(我也祝你学业成功!)

    作为一名终身学习的学生,我始终愿意帮助一位学者:

    您的代码有一些错误,值得注意:

  • intf(intx)
    没有返回语句,即使它需要一个整数。我假设您希望返回程序的结果(请参阅第3期)

  • 执行f(n)两次。首先是第12行,然后是第16行<代码>printf(“f(x)是%d\n”,f(n))实际执行F(n)以接收其返回值以与%d格式说明符关联

  • 您没有为任何整数指定
    x+3
    f(x-3)+(x+5)
    。这些语句不保存需要返回的f(x)的返回值

  • 此链接可能对您有所帮助:

    请特别注意函数的输出是如何捕获的


    希望这有帮助(我也祝你学业成功!)

    据我所知,第一个是
    scanf

    scanf("%d", &n);
    
    第二个是函数
    f
    没有返回任何内容,因此

    int f(int x) {
    //Checks if equal to zero
      if (x <= 0)
      {
         return (x + 3);
      }
    
      return ( f(x-3) + (x+5) );
    }
    

    据我所知,第一个是
    scanf

    scanf("%d", &n);
    
    第二个是函数
    f
    没有返回任何内容,因此

    int f(int x) {
    //Checks if equal to zero
      if (x <= 0)
      {
         return (x + 3);
      }
    
      return ( f(x-3) + (x+5) );
    }
    

    此外,
    scanf
    语句将错过
    &
    此外,
    scanf
    语句将错过
    &
    每个递归函数都有(1)退出条件和(2)递归调用。您没有提供退出条件。此外,您需要
    scanf(“%d”,&n)
    (注意
    ”&“
    ),并且必须验证返回,例如
    如果(scanf(“%d”,&n)!=1){/*句柄错误*/}
    。您对
    f(n)的调用
    不是f的
    //指针,它只是一个函数调用(在这里没有什么意义)。仔细考虑递归调用集必须如何退出。因为它是
    (x-3)+(x+5)
    的计算,所以
    x@DavidC.Rankin:退出条件是
    x是,我把它理解为
    f(x-3+x+5)
    。每个递归函数都有(1)一个退出条件,和(2)一个递归调用。您没有提供退出条件。此外,您需要
    scanf(“%d”,&n)
    (注意
    ”&“
    ),并且必须验证返回,例如
    如果(scanf(“%d”,&n)!=1){/*句柄错误*/}
    。您对
    f(n)的调用
    不是f的
    //指针,它只是一个函数调用(在这里没有什么意义)。仔细考虑递归调用集必须如何退出。因为它是
    (x-3)+(x+5)
    的计算,所以
    x@DavidC.Rankin:退出条件是
    x是,我把它理解为
    f(x-3+x+5)
    。额外的
    返回(…)
    括号是多余的,但函数设置上的调用很好。额外的
    返回(…)
    括号是多余的,但是在函数设置上调用得很好。
    //Pointer for f
      f(n);