void foo(bool b, int i, double d, String s, Object o) {
if (someCondition) {
return foo(b, i, d, s, o);
}
}
Я думал, что есть что-то вроде
return foo(this);
Как я могу вызвать foo
из foo
без передачи параметров? Есть ли стенография?
1 ответ
Нет.
В рекурсивном вызове нет ничего особенного, вы должны передать все аргументы, как и любой другой вызов.
Что вы можете сделать, и что я обычно делаю для рекурсивных алгоритмов, так это иметь локальную вспомогательную функцию:
void foo(bool b, int i, double d, String s, Object o) {
void rec() {
...
if (someCondition) {
return rec();
}
}
rec();
// ...
}
Эта функция обычно имеет по крайней мере один аргумент, то, что я действительно рекурсивно использую, но остальные переменные не нужно передавать при каждом рекурсивном вызове.
Другой вариант, поскольку это выглядит как хвостовая рекурсия, - это переписать в цикл while
:
void foo(bool b, int i, double d, String s, Object o) {
while (someCondition) {
// the fix.
}
// the actual code.
}
Похожие вопросы
Новые вопросы
dart
Dart - это язык программирования, основанный на классах (статически и строго), для создания веб-приложений и мобильных приложений. Dart компилирует в современный JavaScript для запуска в браузере и компилирует в собственный код для запуска на мобильных платформах, таких как Android и iOS. Дарт также работает в командной строке для сценариев и приложений на стороне сервера.