新制度サンプル問題  問7の再帰関数について

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
あきこまさん  
(No.1)
タイトルの問題なのですが、再帰的なプログラムというのは理解も出来て
実際にJavaにて同じものを作成し、結果も問題ないのですが
1つ気になってしまった点がありまして

public class FactorialTest{
public static void main(String[] args){
System.out.println(factorial(4));
}
public static int factorial(int n){
if(n == 0){
return 1;
}else{
return n * factorial(n-1);
}
}
}

上記のようなコードを作成したのですが、変数nは再帰されるたびに-1されていきますが
最終的に0になって0を掛けてしまい結果が0になぜならないのか?という点です。
例えば引数として0を渡した場合、4*3*2*1*0とならないのでしょうか?
また、再帰が終了する条件的なものがありませんが、なぜ再帰のループが終了するのでしょう?
2024.03.27 19:07
まきさん 
(No.2)
>例えば引数として0を渡した場合、4*3*2*1*0とならないのでしょうか?

if(n == 0){
return 1;
n=0の時1を返せって記述されてますが・・・
2024.03.27 19:16
あきこまさん  
(No.3)
すみません、自己解決しました💦
2024.03.27 19:16
あきこまさん  
(No.4)
ifが繰り返し呼び出されるんだから当たり前ですよね(汗)
一日中問題解いてて頭がバグってました(汗)
2024.03.27 19:21

返信投稿用フォーム

※CBT試験では出題内容の公開が禁止されているため、直接的・間接的を問わず、出題内容や難易度を尋ねる質問は厳禁です。
※宣伝や迷惑行為を防止するため当サイトとIPAサイト以外のURLを含む記事の投稿は禁止されています。

投稿記事削除用フォーム

投稿番号:
パスワード:

その他のスレッド


Pagetop