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并尝试调试。嗯,将阶乘移动到单独的方法将是一个很好的起点。或者完全删除阶乘,因为它从来没有实际使用过。然后上帝的我认为代码块中的前两行是赋值;也就是说,代码应该看起来像-可能不是递归的好例子,但是