Я писал сценарий bash, чтобы сделать cd'ing в папку Dropbox (где я храню курсовую работу для uni) проще. Я решил взять параметры, чтобы поместить меня прямо в папки на определенные недели, или родительский каталог или каталог со всеми моими справочными материалами. Я также решил проверить вход с помощью рекурсии (изначально я создал бесконечный цикл, поместив рекурсивный оператор в цикл while while). Код выглядит следующим образом:Рекурсивные решения внутри итерационных решений
#!/bin.bash
#changes to ~/Dropbox/UCP120/
function recurCall() {
echo "Invalid input: $arg1 does not exist."
echo "Enter a valid input"
read inputLoop
validateInput $inputLoop
}
function validateInput() {
arg1="$1"
reference="r"
##snip##
##if DIR is !null but non-existent loop and ask for input
elif [[ ! -d .../UCP120/"$arg1"/ || ! -d .../UCP120/Week\"$arg1"/ ]]; then
recurCall $arg1
##Recursive solutions don't require iterative control structures.
#while [[ snip (see if above) ]]; do
# recurCall $arg1
#done
fi
}
##Call the function. Get this ball rolling
validateInput $1
Моими вопросов:
- Может ли я просто повез, что это работает? Или мне удалось создать это достаточно хорошо?
- Является ли рекурсия реальным реальным решением для этого? Или бесполезно вне обучения?
- Есть ли когда-нибудь приложение реального мира для рекурсии внутри итерации, как моя плохо продуманная оригинальная попытка?
- Как я могу улучшить это?
Благодарю вас, извините, если я задал неправильный вопрос. Однако я надеюсь, что Интернет с его обширным опытом поможет мне и моему пониманию этих концепций.
Редактировать: удалить, если инструкция then в validateInput. Меняются имена функций, поскольку они имеют больше смысла таким образом. Удалено, хотя условия, мы надеемся, уменьшаем ширину экрана.
Редактировать: Сокращенный путь к каталогу, чтобы уменьшить ширину экрана даже больше.