分配:
编写并测试递归函数 返回的值 遵循递归定义:
f(x) = 0 if x <= 0 f(x- 1) + 2 otherwise
我的节目:
#include <stdio.h>
int main(void)
{
int n, x;
int factorial(int n) {
if (x <= 0) {
printf("x equals: ");
return 1;
} else {
return n * factorial(n - 1); //error here
}
f(x) = f(x - 1) + 2;
}
return 0;
}
答案 0 :(得分:2)
我看到这个错误吗? 为什么会有
你的int factorial函数中的F(X)= F(X-1)2;
?
答案 1 :(得分:2)
该代码不应该按原样编译。你不能在C中在另一个函数中定义一个函数,所以你需要在main()
之外创建另一个函数,然后调用它。
我建议您完全删除factorial()函数,因为它似乎与此赋值无关。
程序的基本结构应该是:
#include <stdio.h>
int f(int x)
{
//definition of recursive function
}
int main(void)
{
//call to recursive function
return 0;
}
赋值给出了递归函数的定义;你只需要把它翻译成C。
答案 2 :(得分:1)
您已在主中定义了阶乘函数,这是不可能的。从main()中分离其定义,并从main()调用它。
希望这有效。首先纠正这一点,然后才能做到。
答案 3 :(得分:1)
你已在main中声明了factorial。
你不是在主要部门中称为阶乘。
答案 4 :(得分:1)
你想要这样的东西:
int factorial(int n) {
//calculate the factorial
return result;
}
int main() {
int result = factorial(10); // Calculate 10!
printf("10! is %d", result);
}
P.S。谢谢你诚实地做家庭作业!
答案 5 :(得分:0)
要求您实施f(x)
定义为:
f(x) = 0 if x <= 0
f(x-1) + 2 otherwise
所以,首先,忘记阶乘,我猜你抓住它作为例子或递归函数,但这不是你要求你做的。
您需要实现函数f
,并且实现如下所示:
int f( int x ) {
if( x <= 0 ){
return /*something*/;
}else{
return /*something else*/;
}
}
通过阅读您提供的f(x)
定义,您可以了解/*something*/
和/*something else*/
应该是什么。
然后,您被要求“测试”您的实施。您可以通过查看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;
}
答案 6 :(得分:0)
factorial ()
功能。这是不允许的。你需要将整个功能放在主要功能之外。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;
}
}
我无法理解为什么阶乘函数会影响你。可能你可能想修改它并实现给定的问题。
答案 7 :(得分:0)
#include<stdio.h>
int fun(float i){
int p;
if(i<=0){
return 0;
}
else{
i-=1;
p=fun(i)+2;
}
return p;
}
void main(){
float i;
printf("Enter the number: ");
scanf("%f",&i);
printf("\nThe output is %d",fun(i));
}
检查一下。
答案 8 :(得分:-1)
我认为这就是你需要的。 #包括 int f(int x);
int main(void){
int result = f(x);
printf("10! is %d", result);
return 0;
}
int f(int x) {
if (x <= 0) return 0;
return x*f(x-1)+2; // No more error here. This is where recursion begins
}
顺便说一下,这不是一个因子函数。