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