質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

3回答

606閲覧

【C言語】X^nを浮動小数でもできるようにしたい。

退会済みユーザー

退会済みユーザー

総合スコア0

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2022/04/25 03:08

浮動小数xと整数nを引数にとり、xのn乗を返す関数を定義して、
ユーザーがx,nを入力すると計算結果を表示するプログラムを作っています。
しかし、整数には対応できるものの、x=0.9,n=-5などと入力すると"Segmentation fault"と表示されてしまいます。
型の指定の方法がよろしくないのだろうとは思うのですがどう修正したらいいかがわかりません。ご協力よろしくお願いします。

C++

1#include <stdio.h> 2 3double power(double x, int n){ 4 5 if (n == 0) 6 { 7 return 1; 8 } 9 else { 10 return x * power(x , n-1); 11 } 12} 13 14int main(){ 15 double x; 16 int n; 17 18 printf("x = "); 19 scanf("%lf", &x); 20 printf("n = "); 21 scanf("%d", &n); 22 printf("x ** n = %f\n", power(x, n)); 23 return 0; 24}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

if (n < 0) return power(x, n+1) / x; でしょう。

投稿2022/04/25 03:16

kazuma-s

総合スコア8224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/04/25 03:18

よくわかりました。 ありがとうございます。
guest

0

ベストアンサー

nが負だと、関数 power() が無限再帰してしまいます。
nが負の場合は n を増やしていく方向に再帰しましょう。

型の指定に問題はありません。

投稿2022/04/25 03:13

編集2022/04/25 03:14
int32_t

総合スコア20670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/04/25 03:16

なるほど! else ifでnが負の数であった場合の挙動を書いてあげないといけないのですね。
int32_t

2022/04/25 03:17

そのとおりです。 nが負の場合、xのn乗 == (xのn+1乗) / x ですね。
退会済みユーザー

退会済みユーザー

2022/04/25 03:22

完全に理解しました。 ありがとうございます!
guest

0

nが負数のとき、この関数は終了しません。

投稿2022/04/25 03:11

ozwk

総合スコア13512

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/04/25 03:14

ではnが負の場合でも正しく動作させるにはどう修正したらよいのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問