◎アイディアその1. を求めるのに、わざと少し余分な も考えて、 を作る。( である。)
◎アイディアその2. べき指数 を でわって、 と書くと
◎レベル 5.
def torikae(c,a,n) r=n% 2 ### r は c を 2で割った余り if (r== 0 ) ### 条件文の ruby 的書き方。 c1=c else c1=c*a end a1=a**2 n1=n/2 ### n1=n.div(2) のほうがいいかも。(付記参照) return([c1,a1,n1]) end
上のように(正しく)入力した後、
torikae(1,2,5)
を実行すると、何が得られるか?
◎ 利用例(レベル6)(レベル5の続きに書く。)
def g1(c,a,n) ## c*(a**n) を求める関数 while n>=1 ## 「n>=1 のあいだ繰り返す」の ruby 的書き方。 c,a,n=torikae(c,a,n) ## このように変数をいっぺんに代入できる。 end return(c) end
○ 一般に正の数 を レベル5のtorikae(c,a,n) の出力結果で 取り替えちゃった後でも の値は変わらないことを納得せよ。 (納得するだけでいい。)
◎最終問題 (レベル7): のとき、 を で割ったあまりを求めよ。
ヒント:
torikae(c,a,n)
の計算の後、
を それぞれ ,
で置き換えるようにして本日の課題の をつくり、
計算を実行する。
◎ の動作確認プログラム例
for i in 1..10 p [i,f(2,i,10**10)]
○付記:
ruby では、 は を「あまりを許した割り算」で で割った商(つまり33)
を指すのが標準の動作である。しかし場合によっては
(プログラム側で動作を指定することにより)
を分数( と等しいアレ)と認識する場合もある。
そのような場合、上で10/3, n/2 などとある部分は、
それぞれ10.div(3), n.div(2)
などと書いてやるとよい。