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

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

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

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

2回答

832閲覧

可変長引数と最大公約数の組み合わせ方について

退会済みユーザー

退会済みユーザー

総合スコア0

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/06/12 08:45

編集2019/06/12 08:59

可変長引数を使って、複数の値の最大公約数を出したいのですが、コードが分からないので、教えて頂きたいです。

すいません、ルール知らなかったので丸投げしてしまいました。

2つの値の時は、
func gcd(_ a: Int,_ b: Int)->Int{

let r = a % b if r != 0{ return gcd(b, r) } else { return b }

で、最大公約数を出せたのですが、可変長引数を組み合わせようと考えた時に、どうすれば良いか分からなかったのでヒントでも頂けたら有り難いです。

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

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

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

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

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

mather

2019/06/12 08:51

丸投げの質問は推奨されていません。 ヒントですが、まずは2引数の場合に最大公約数を計算するコードを示してください。
stdio

2019/06/12 09:02

書いたのならデバックすれば?
mather

2019/06/12 09:03

ソースコードを書くときはコードブロックを使いましょう。
guest

回答2

0

Swiftでの可変長引数関数の書き方は以下の通りです。

swift

1func hoge(_ args: Int...) { 2 // すべての実引数は args に [Int] の要素として渡される。順番は保持される。 3 // 4 print(type(of: args), "\n", args) 5}

一応。
aとbとcの最大公約数は、(aとbの最大公約数)とcとの最大公約数です。

投稿2019/06/12 09:27

MasakiHori

総合スコア3384

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

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

0

2引数の最大公約数を求める関数を便宜上 _gcd とします。

引数は少なくとも1つ以上は無いと計算することすらできないので、

swift

1func gcd(_ x: Int, _ xs: Int...) -> Int { ... }

のように書けるといいのではないでしょうか。(仮引数の x. xs は関数型の文脈でよく使われる変数名ですが気にしないでください)
xs は整数値の配列なので、これを繰り返し以下のように計算できるといいですよね。

result = x; result = _gcd(result, xs[0]); result = _gcd(result, xs[1]); ...

for で書いてもいいし、 reduce などを使うともっとシンプルに書けます。
ただ、よくわからないままで正解だけ受け取ったとしてもなんの学びにもならないので、まずは自分で考えてみてください。

投稿2019/06/12 15:25

mather

総合スコア6753

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問