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

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

新規登録して質問してみよう
ただいま回答率
85.49%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

4回答

1905閲覧

**を使わずに再帰か繰り返しを使ってのプログラム

sabadesu

総合スコア7

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2018/04/27 10:36

編集2018/04/28 01:30

power(n,m)として
べき乗演算子**を使わずに
nのm乗を計算するとしたら
どうしたらいいでしょうか。
nは1以上の整数mは0以上の整数とします。
繰り返しのfor または whileを使ったパターンと
再帰を使ったパターンの両方を知りたいです。初学者ですみません
再帰の概念がわからず
def power(n,m)
if n==1 #nが1ならmが幾つでも
1 #答えは1
else #そうでなければ,,,
この先の概念がよく理解できなく
m<=2
npower(nm-1)
end
end
かと思ったのですが、動かず
ならば
for i in n..m
n*power(n+1)
なのかとか。
基本がわかっておらず本当にすみません

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

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

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

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

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

guest

回答4

0

まず、「ab乗」は、「ab回かけ合わせたもの」です。

そして、Rubyで「何回繰り返す」というような場合、ふつうforwhileも使いません(よほど特殊な条件を除いて、Rubyのforはほぼ出番がありません)。代わりに、Integer#timesを使います(るりま)。


(質問の編集を踏まえて)

よく言われる言葉に、「プログラムは書いたようにしか動かない」というものがあります。再帰にしてもループにしても、まずはやるべきことを日本語で表現して、それをプログラム言語に訳していく、という方針でやっていきましょう。「こんな感じで動くだろう」では、計画的に作れる段階とは程遠いです。

投稿2018/04/27 11:02

編集2018/04/28 01:44
maisumakun

総合スコア145183

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

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

0

Rubyは詳しくないのでアルゴリズムだけ

  1. 一時変数xを1で初期化、一時変数yを0で初期化
  2. y < mである限り以下の処理を続ける。
  3.  xにnをかけて更新する。
  4.  yに1を加えて更新する。

ちなみに、これはmに比例する反復回数(処理時間)が必要ですが、mの対数に比例する改善方法もあります。

投稿2018/04/27 15:23

HogeAnimalLover

総合スコア4830

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

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

0

Rubyなど不要。そう、シェル芸ならね!

bash

1$ power(){ [[ $2 -eq 0 ]]&&echo 1||echo $((`power $1 $(($2-1))`*$1));} 2$ power 2 10 31024 4$ power 3 5 5243

投稿2018/04/27 12:53

編集2018/04/27 12:58
hichon

総合スコア5737

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

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

0

ruby

1# 2.5.0↑のみ 2def power_1(n, m) 3 n.pow m 4end 5 6def power_2(n, m) 7 m.times.reduce(1){|r,_| r * n } 8end 9 10def power_3(n, m) 11 m.zero? ? 1 : n * power_3(n, m-1) 12end 13 14def power_4(n, m) 15 ([n] * m).reduce(:*) || 1 16end

投稿2018/04/27 11:59

編集2018/04/28 03:36
asm

総合スコア15147

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問