2011-05-05 42 views
1
#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); 
} 
f(x)=f(x-1)+2; //says error is here 
} 
return 0; 
} 

我試過一些東西,無法讓它工作。我可能會過度疲勞,尋找最小的東西,但幫助將不勝感激!謝謝:)C遞歸程序將無法編譯W/GCC

+2

c中的函數不能嵌套 – 2011-05-05 15:36:20

回答

6

您不能在main()或任何其他函數中聲明函數定義......函數定義必須是獨立的,並且不能在其中嵌入函數定義。

另外我不確定你在標記爲錯誤的行上做了什麼,因爲f()不是一個已定義的函數,所以你不能調用它。此外,它需要返回某種類型的l值,例如指向函數內部聲明的靜態變量的指針,或者引用通過函數傳遞的指針,即使如此,語法也是不正確的,因爲會有必要的解除引用......所以基本上你不能做那些你在做的事。

要得到的東西,編譯,嘗試

#include <stdio.h> 

int factorial (int n) 
{ 
    if (n <= 0) 
    { 
     return 1; 
    } 
    else 
    { 
     return n * factorial (n-1); 
    } 
} 

int main (void) 
{ 
    int x; 

    x = factorial(5); 
    printf("Factorial of 5 is equal to %d", x); 

    return 0; 
} 
1

使用縮進看到可能出現的問題與範圍:

#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); 
    } 
    f(x)=f(x-1)+2; //says error is here 
} 
return 0; 

}

據我記得,C不有關閉。

1

函數不能在另一個函數內定義。不過gcc允許它作爲擴展。您已經定義了一個名爲factorial的函數,但正試圖使用​​尚未在任何地方聲明的f

+0

感謝有關gcc的信息 – Jason 2011-05-05 15:50:18