-7

私はこのC再帰関数を持っています

#include<stdio.h> 
int main(){ 
    int entier; 
    int rlt; 
    printf("\nSaisir un entier : ");  
    scanf("%d",&entier); 
    rlt=loga(5); 
    printf("Le logarithme base 2 de %d est %d:",entier,rlt); 
} 

int loga(int x){ 
    if(x==1){
        return 0;
    } 
    else {
        return (loga(x)=1+loga(x/2));
    } 
}
4

4 に答える 4

2

関数を使用する前に宣言する必要があります。

#include<stdio.h> 

int loga(int x); //declaration

int main(){ 
    //... 
} 

int loga(int x){ 
    if(x==1){return 0;} else {return (loga(x)=1+loga(x/2));} 
}
于 2013-01-01T12:02:33.463 に答える
1

に代入しnon-lvalueていloga(x)=1+loga(x/2)ます。これは無意味で無効です。

于 2013-01-01T12:05:12.327 に答える
0

再帰部分は奇妙に思えます。

int loga(int x){ 
    if(x==1){
        return 0;
    } else {
        return (1+loga(x/2));
//             ^^^^^^^^^^^^^ Changed here
    } 
}
于 2013-01-01T12:05:02.420 に答える
-1

次のコードで問題が解決すると思います。

#include<stdio.h> 
int loga(int);

int main()
{ 
    int var; 
    int result; 
    printf("\nPlease enter a value : ");  
    scanf("%d",&var); 
    result=loga(5); 
    printf("The logarithm to the base 2 for %d is %d:",var,result); 
} 

int loga(int x)
    { 
    if(x==1)
        {
        return 0;
        } 
    else
        {
        return (1+loga(x/2));
        } 
      }

このコードは正しく実行されるはずです。

于 2013-01-01T12:17:50.640 に答える