C递归函数调用概念

时间:2015-07-12 08:59:19

标签: c function recursion

/*Program to print all the numbers between a lower bound and a upper bound values*/     

#include<stdio.h>
#include<stdlib.h>
void recur(int a, int b);
int main(void)
{
    int x,y;
    printf("Enter the lower and upper bound values: \n");
    scanf("%d %d",&x,&y);
    void recur(x,y);
    return 0;
}
void recur(int a,int b)
{
    if(a<b)
    {
        printf("%d /n",a);
        a++;
        void recur(a,b);
    }
}

我得到的输出是:

Enter the lower and upper bound values:
    10
    50
    process returned 0.

语法或返回类型有什么问题吗? 我刚刚开始学习c.Need Help

4 个答案:

答案 0 :(得分:2)

两个

void recur(x,y);
void recur(a,b);

声明函数(原型)。要调用,请将其更改为

recur(x,y);
recur(a,b);

答案 1 :(得分:0)

void recur(int a,int b)
{
    if(a<b)
    {
        printf("%d /n",a);
        a++;
        //void recur(a,b); You need to call the function not to declare 
        // there is difference between dec and calling.
       recur(a,b); // is the correct way to do this .
    }
}

同样需要main()方法

答案 2 :(得分:0)

您的计划中存在以下错误:

  1. 当您调用函数时,语法为
  2. funcName(param1, param2);
    

    或者,如果函数返回一个值:

    ret = funcName2(param3, param4, param5);
    

    在您的代码中,在调用时将void置为语法错误:

    void recur(a,b);
    

    这是声明函数的方式,而不是调用函数。注意功能声明和功能定义之间存在差异。

    1. 如果您想在C中打印特殊字符,例如换行符,则需要打印'\ n'行:
    2. printf("some message followed by newline \n");
      

      请注意,'\ n'是单个字符,即使您看到'\'和'n'也是如此。 '\'的目的是逃避下一个char'n',使它成为一个新的char。所以'\ n'是换行符。

      C中的其他特殊字符是:'\ t'表示标签,'\'表示实际打印'\'。 C中的字符串用双引号括起来,如“message”,而字符用单引号括起来,如'a','b','\ n','n','\'。

答案 3 :(得分:-1)

这是您的工作代码。

#include<stdio.h>
#include<stdlib.h>
void recur(int a, int b);
int main(void)
{
    int x,y;
    printf("Enter the lower and upper bound values: \n");
    scanf("%d %d",&x,&y);
    recur(x,y);           // change made here
    return 0;
}
void recur(int a,int b)
{
    if(a<b)
    {
        printf("%d \n",a);
        a++;
        recur(a,b);          // change made here
    }
}