c-递归函数方程



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

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

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

f(x) =x+3 if x <=0
f(x)=f(x-3)+(x+5) otherwise

我的尝试:

#include <stdio.h>
int f(int x); //Prototype to call to f
int main(void) {
int n; //number the user will input
//Ask user to input data an reads it
printf("Enter a whole number: ");
scanf("%d", &n);
//Pointer for f
f(n);
//Prints results
printf("nn is %dn", n);
printf("f(x) is %dn", f(n));
return 0;
}
int f(int x) {
//Checks if equal to zero
if (x <= 0) {
x + 3;
}
//If not equal to zero then do this
else {
f(x - 3) + (x + 5);
}
}

感谢大家的帮助,从你们的意见和建议中学到了很多。我相信我能做到https://pastebin.com/v9cZHvy0

据我所见,第一个是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) );
}

次要-下面的语句实际上是无用的

//Pointer for f
f(n);

作为一名生活中的学生,我总是愿意帮助一位学者:

您的代码有几个错误,应该注意:

  1. int f(int x)没有返回语句,即使它需要一个整数。我想您希望返回程序的结果(请参阅第3期(。

  2. 执行f(n(两次。先在12号线上,然后再在16号线上。printf("f(x) is %dn", f(n));实际执行F(n(,以便接收其返回值以与%d格式说明符关联。

  3. 您尚未将x+3f(x-3) + (x+5)分配给任何整数。这些语句不会保存需要返回的f(x(的返回值。

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

https://www.geeksforgeeks.org/c-function-argument-return-values/

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

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

最新更新