重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

お世話になります。下記 url の問題について教えていただけますと幸いです。
https://www.fe-siken.com/kakomon/sample/b7.html

プログラムとしては

1 〇整数型:factorial(整数型:n)
2 if(n=0)
3  return 1
4 end if
5 retun n × factorial(n-1)

というものになっています。

ここでnを5とした場合、5行目において 5 × factorial(4)
ということになりますよね。
ここでfactorial関数を呼び出しているので1行目に戻る、と考えていいのでしょうか。

そもそも1行目の〇印って何を意味するのでしょうか。
「これはあくまでプログラムの題目であってプログラムの一部ではありませんよ」
という認識だったのですが、この認識は誤りでしょうか。

どうぞよろしくお願いいたします。

A 回答 (3件)

そもそも階乗はわかりますよね。


分からないと全く解けません。

1行目は関数名を示すものです。引数が整数型のnで、戻り値が整数型の値だと書いています。
処理は2行目からです。
    • good
    • 0
この回答へのお礼

ありがとう

お礼日時:2025/02/21 21:48

> ここでfactorial関数を呼び出しているので1行目に戻る、と考えていいのでしょうか。



その「戻る」がGOTOとかでジャンプするイメージなら、GOTO文に置き換えると期待した結果にならないと思う。

再帰的に「関数を呼び出すとは?」を説明しようとしたら、スタックとか何とか、ややこしい。
解説を動画にしてくれてるのがYouTubeとかにあるけど、分かりやすいんだろうか。


> そもそも1行目の〇印って何を意味するのでしょうか。
> 「これはあくまでプログラムの題目であってプログラムの一部ではありませんよ」
> という認識だったのですが、この認識は誤りでしょうか。

そんな感じでいいと思う。
他の問題もそんな書き方だし。
    • good
    • 0
この回答へのお礼

ありがとう

お礼日時:2025/02/21 21:47

1行目に戻るわけではありません


最初の引数 5 と掛け合わせる数を求めるための結果を待っている状態です

其の上で、改めて(別メモリ空間で) factorial関数が起動されます
※この際の引数は4になる
その処理も5行目の段階でホールドされて、4に掛け合わせる値を求めるために再びfactorial関数が起動されます
の繰り返し

だから再帰関数なのです <ー再起じゃないよ

1行目に関してはどういう言語系なのかわかりませんが
関数の型が整数型であるという意味の表記ナノではないだろうか?

コロンの右側は、関数名と引数の型を示しているので
プログラムの一部ではあります
    • good
    • 0
この回答へのお礼

ありがとうございます。戻るわけではなく結果を待っている状態だったのですね。
誤字の件失礼いたしました。

大変ありがとうございました!

お礼日時:2025/02/21 19:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A