新制度サンプル問題 問7の再帰関数について
あきこまさん
(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とならないのでしょうか?
また、再帰が終了する条件的なものがありませんが、なぜ再帰のループが終了するのでしょう?
実際に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
広告
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
広告