1

基本的な再帰コードを書きましたが、エラーが発生しました:

再定義; さまざまな基本タイプ

コードは次のとおりです。

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;
}
4

1 に答える 1

4

では、これまで宣言されていないcountDown関数を使用します。C89countUPの §3.3.2.2 によると、関数が使用時に宣言されていない場合、暗黙的に次のように宣言されます。

extern int countUP();

後で、実際に を宣言 (および実装) しますcountUPvoid countUP(int n)、上記の署名とは一致しません。

countUPを追加して宣言する

void countUP(int n);

前に countDown。あなたがそれにいる間、あなたはまたすべきです

#include <stdio.h>

のためにprintf

于 2013-05-22T18:59:57.493 に答える