2011-12-31 4 views
4

私は基本的に私は値を返すという概念が届かない、明らかに次き、math.powを書き換えしようとしています。私は間違って何をしているのですか?だから、total = x*totalは常に0になります呼び出す0で力を動作するように反復を使用し

public static int power(int x, int n) 
{ 
    int total = 1; 
    for(int i = 0; i < n; i++) // i can be declared here directly 
    { 
     total = (x * total); 
    } 
    return total; // total remains 1 if n = 0 
} 

答えて

4

あなたはあなただけにすべてを書き換えることができます。1.

int total = 1; 

に合計を初期化する必要があります。

あなたは、xに合計を初期化する必要があります。代わりにあなたがi <= n-1またはi < nint total=1を使用する必要がありますi < n-1

+0

多く正解。私は愚かなことをやっていました。私の行の直後ではないので、誰もそのエラーを見つけませんでした:-)。 – orange

+0

私は見つけたと答えた私は投稿する前に私の日食でそれを実行したので:) –

+0

@ジェフ:私はあなたが ";私が投稿したコードには表示されません。私はあなたに余分な ";"があると明示的に言及するとは思わなかった。 :) – Tudor

1

変数開始数:

public static int power(int x, int n) 
{ 
    if (n == 0) return 1; 
    int i,total; 
    for(i = 0; i < n-1 ;i++); 
    { 
     total = (x * total); 
    } 
    return total; 


} 
3
public static int power(int x, int n) 
{ 
    int total = 1; // Initialized total to 1 
    for(int i = 0; i < n; i++) 
    { 
     total = x*total; 
    } 
    return total; 


} 
2

。それがうまくいくことを望みます。

ものためのループエンドから;を削除します。あなたは意味のように1のコード

public static int power(int x, int n){ 
     int total=1; 
     for(int i = 0;i < n;i++) 
      total *= x; 
    return total; 
} 
1

を書き換え、それが見えます:

if (n == 0) return 1; 

はパワーではなく、ベース番号を確認してください。

あなたはtotal = xを使用してtotalのいずれかを初期化していないと思います。ここ

0

ログ(n)は、複雑代わりの線形有する溶液です。しかし、オーバーフローに注意してください。初期化のため

int pow(int x, int n) { 
    int res = 1; 
    while(n > 0) { 
     if(n % 2 == 1) { 
      res = res * x; 
     } 
     x = x * x; 
     n = n/2; 
    } 
    return res; 
} 
関連する問題