我写了一个基本的递归代码,但发生了错误:
重新定义;不同的基本类型
以下是代码:
int m=1;
void countDown(int n)
{ /* count down */
printf("Count down: %d\t", n--);
if(n<1) return; /* terminate recursion */
else countUP(n); /* start/continue indirect recursion */
}
void countUP(int n)
{
printf("up: %d\n", m++);
countDown(n);
/* indirect recursion */
}
void main()
{
countDown(5);
return;
}
答案 0 :(得分:4)
在countDown
中,您使用到目前为止尚未声明的函数countUP
。根据{{3}}的§3.3.2.2,当一个函数在使用时未声明时,它被声明为隐式地为
extern int countUP();
稍后,您实际上声明(和实施)countUP
,但是void countUP(int n)
,它与上述签名不符。
通过添加
来声明countUP
void countUP(int n);
countDown
之前的。当你在这里时,你也应该
#include <stdio.h>
代表printf
。