[過去ログ]
ふらっと C#,C♯,C#(初心者用) Part138 (1002レス)
ふらっと C#,C♯,C#(初心者用) Part138 http://mevius.5ch.net/test/read.cgi/tech/1528194762/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
471: デフォルトの名無しさん (ワッチョイ 5f51-bAjg) [sage] 2018/07/06(金) 14:19:45.98 ID:v98PP3uI0 教えてください Power1とPower2はxのn乗を求める関数だそうなのですが なぜPower2がxのn乗になるのかさっぱり分かりません しかもPower2の方がPower1よりも効率がいいらしいです よろしくお願いします double Power1(double x, uint n) { double power = 1; while (n > 0) { power = power * x; n = n - 1; } return power; } double Power2(double x, uint n) { double power = 1; while (n > 0) { if (n % 2 == 1) power = power * x; x = x * x; n = n / 2; } return power; } http://mevius.5ch.net/test/read.cgi/tech/1528194762/471
473: デフォルトの名無しさん (アウアウエー Sa1f-z1ya) [sage] 2018/07/06(金) 15:02:32.12 ID:W35a98bMa >>471 高校数学やん x^(a +b) = x^a + x^b x^(a * b) = (x^a)^b http://mevius.5ch.net/test/read.cgi/tech/1528194762/473
474: デフォルトの名無しさん (アウアウウー Sa0b-SJYg) [sage] 2018/07/06(金) 15:02:47.67 ID:M3cpa2kAa >>471 これでわかるか? x^n = { nが2で割り切れるとき x^(n/2) * x^(n/2) 割り切れないとき x^((n-1)/2) * x^((n-1)/2) } http://mevius.5ch.net/test/read.cgi/tech/1528194762/474
479: デフォルトの名無しさん (ワッチョイ 5f51-bAjg) [sage] 2018/07/06(金) 16:10:07.44 ID:v98PP3uI0 >>478 ありがとうございます そのPowerを再帰を使わずに書くと>>471のPower2になるということですか? なんだか分かりそうな気がしてきたのでその方向でもう一度考えてみます! http://mevius.5ch.net/test/read.cgi/tech/1528194762/479
481: デフォルトの名無しさん (ワッチョイ 5f51-bAjg) [sage] 2018/07/06(金) 17:25:12.79 ID:v98PP3uI0 お陰様で>>471について理解できたと思います どうもありがとうございました! >>480 言われてみると、>>471のPower1やPower2では0の0乗が1になりますが >>478のPowerだと0の0乗が0になりますね 調べてみたらWikipediaに「0の0乗」というページがあって 確かに0の0乗を1と考えることが多いと書いてありましたが それ以外の考え方もあるみたいです http://mevius.5ch.net/test/read.cgi/tech/1528194762/481
484: デフォルトの名無しさん (ワッチョイ 5f5d-bAjg) [sage] 2018/07/07(土) 00:10:19.78 ID:PwTdVeWu0 >>471の件ではどうもありがとうございました もう一つ質問させてください 以下のPopulation1とPopulation2は同じ結果になるそうです Population1は>>471のPower2によく似てるので これは指数計算の変形だと思うのですが、 Population2でも同じ結果になるのが理解できません 何度もすみませんがよろしくお願いします uint Population1(uint n) { uint population = 0; while (n > 0) { if (n % 2 == 1) population = population + 1; n = n / 2; } return population; } uint Population2(uint n) { uint population = 0; while (n > 0) { population = population + 1; n = n & n - 1; } return population; } http://mevius.5ch.net/test/read.cgi/tech/1528194762/484
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.030s