1


以下の Series を C: series :で書いてみました(1^1),(2^(1/2)),(6^(1/4)),(24^(1/8)),...,((n!)^((1/2)^n))

C コード:

#include <stdio.h>
#include <math.h>


int fact(int x){
  if (x==1)
    return 1;
    else return x*fact(x-1);
}


int main(){
    int x,y;
    scanf("%d",&x);
    y=x;
    x=fact(x);
    y=pow(0.5,y-1);
    double h;
    h=pow(x,y);
    printf("\n%lf" ,h);
    return 0;
}

なぜそれ1.00000はいつも印刷されているのですか?

4

2 に答える 2

6

変数yintであるため、 の戻り値を格納するpow()と切り捨てられます。のマニュアルページをpow()読んでください。

コンパイラですべての警告を有効にする方法を確認し、コンパイラの出力を見てください。

于 2013-11-07T13:16:44.333 に答える
2

関数は引数としてpow(a,b)受け取りdouble、 を返しますdouble。に置き換えintてみてくださいdouble

于 2013-11-07T13:19:52.407 に答える