prog2.jl |
# prog2a.jl --- a の n 乗を計算する。 function prog2a(a,n) p=1 # p=one(a) とすべき? for i=1:n p *= a end p end |
prog2a.jl |
# prog2a.jl --- a の n 乗を計算する。 function prog2a(a,n) p=1 # p=one(a) とすべき? for i=1:n p *= a end p end |
sizeof(1) とか sizeof(Int) は 8 を返す。
x=1 としてから x=2x;bitstring(x) としてみよう。
が負の場合にも対応するとか、 が整数かそうでないかで処理を分けたりする? ループ回すのもちょっと気が利かないし。
prog2b.jl |
# prog2b.jl ---a の n 乗を計算する。 (お遊びモード) function prog2b(a,n::Int) if n >= 0 positivefact(a,n) elseif isa(a,Int) one(a) // positivefact(a, -n) else one(a) / positivefact(a, -n) end end function positivefact(a,n::Int) if n == 0 one(a) # 0^0 チェックをすべきか? undefined とか返してやる? elseif n % 2 == 0 prog2b(a*a, div(n,2)) else a * prog2b(a*a, div(n,2)) end end |