2つの整数 a, b を引数にとり、a の b 乗を出力したいが、a または bがマイナスの条件を入れるとsegmentation faultになってしまう。
実行例
Input two integers : 2 -3
a^b = 0.125000
Input two integers : -3 5
a^b = -243.000000
#include <stdio.h> float my_pow( int a, int b ){ if ( a < 0 || b < 0){ float y, z; y = my_pow( a, -b); z = 1.0 / y; return y; } if ( a == 0 ) return 1; else return a * my_pow( a, b - 1 ); } int main(void) { int a; int b; printf("Input two integers : "); scanf("%d %d", &a, &b ); printf("a^b = %f\n", my_pow(a, b)); return 0; }
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。