2016-07-15 10 views
-4

コンパイル中にエラーが発生しました エラー:代入の左辺オペランドとして左辺値が必要です。 エラー:代入fac(i)= i * fac(i-1)の左オペランドとして左辺値が必要です。代入の左辺オペランドに左辺値が必要

#include<stdio.h> 


int fac(int i) 


{ 

    int j; 

    fac(0)=1; 

    fac(i)=i*fac(i-1); 


    printf("%d",fac(i)); 


} 

int main() 
{ 

    int x,y; 

    printf("enter the number"); 

    scanf("%d",&x); 

    if(x>=0) 

    { 
     fac(x); 
    } 


} 
+1

' FAC(0)= 1により達成することができる0

ときに関数が1を返すように設定するのですか?どこで「C」を学び始めたのですか? – Michi

答えて

0
fac(0)=1; 

あなたがそのような再帰に値を割り当てていない、有効なCではありません。

あなたはそれが関数呼び出しであるので、あなたがfac(i)に値を割り当てることはできませんここ

if(j==0) { 
    return 1; 
} 


fac(i)=i*fac(i-1); 

同じに近い何かをしたいと思いますように思えます。

2

Cでは、そのような関数値は返されません。代わりに、あなたは

if (i == 1 || i == 0) 
    return 1; 

return i * fac(i - 1); 

問題のようなものを書くと結果はfac(0)は、あなたが書くことができますオブジェクトを参照していないということです。それは新しい値を1に割り当てるようなものです。あなたはそれをすることはできません。

0
fac(0)=1; 

ここでfacは関数です。 fac(0)は何らかの値(たとえばx)を返します。その戻り値を1に割り当てることはできません.Cではなく少なくとも。 `本当に、何をしようとする

は、入力これは

int fac(int i) 
{ 
    int j; 
    if (i == 0) 
    { 
    return 1; 
    } 
    else 
    { 
    return (i*fac(i-1)); 
    } 
    printf("%d",fac(i)); 
} 
+1

'printf'文は決してこのコードでは実行されないことに注意してください。 –

関連する問題