Вопрос:
В этой задаче мы оцениваем следующий сценарий: Вы стоите у основания лестницы и идете наверх.Небольшой шаг поднимется на одну ступеньку, а большой шаг - на две.Вы хотите рассчитать количество способов подняться по всей лестнице на основе различных комбинаций больших и малых шагов.Например, по лестнице из трех ступеней можно подняться тремя различными способами: три маленьких шага, один маленький шаг, за которым следует один большой шаг, или один большой, а затем один маленький.
Вызов путей(3) должен выдать следующий вывод:
1 1 1,
1 2,
2 1
Мой код:
public static void waysToClimb(int n){
if(n == 0)
System.out.print("");
else if(n == 1)
System.out.print("1");
else {
System.out.print("1 ");
waysToClimb(n - 1);
System.out.print(",");
System.out.print("2 ");
waysToClimb(n - 2);
}
}
Мой вывод:
1 1 1,
2,
2 1
Моя рекурсия не запоминаетсяпуть, который потребовалось, чтобы понять, как это исправить?
Редактировать:
Спасибо, ребята, за ответы.Извините за поздний ответ
Я понял это
public static void waysToClimb(int n){
String s ="[";
int p=0;
com(s,p,n);
}
public static void com (String s, int p, int n) {
if(n==0 && p==2)
System.out.print(s.substring(0,s.length()-2)+"]");
else if(n==0 && p !=0)
System.out.print(s+"");
else if(n==0 && p==0)
System.out.print("");
else if(n==1)
System.out.print(s+"1]");
else {
com(s+"1, ",1,n-1);
System.out.println();
com(s+"2, ",2,n-2);
}
}