Я знаю, что это не то, для анонимных функций, но так же, как головоломка, я попытался сделать рекурсивную функцию через анонимные функции. Прообразом рекурсивных функций, очевидно, является факторная функция. Проблема состоит в том, что трудно выполнить различие в рамках анонимных функций. То, что мне удалось сделать до сих пор, следующее:
[email protected](cn,n,f)eval('if n>1; f(cn*n,n-1,f);else;ans=cn;end');
[email protected](n)f(1,n,f);
Или, альтернативно:
[email protected](cn,n,f)eval('if n>1; f(cn*n,n-1,f);else;disp(cn);end');
[email protected](n)f(1,n,f);
Что не очень удовлетворительно, так это то, что вы по-прежнему не можете использовать эту функцию при прямом назначении, a=f(3)
все еще производит ошибку, так как eval
не получает значения.
Итак, мой вопрос: можете ли вы на самом деле сделать рекурсивную функцию через анонимные функции, например, вычисляет факториал таким образом, который позволяет, например, a=f(3)
, полагаясь только на собственные функции matlab (или функции, которые вы можете создать в командной строке, как это было в моем примере)?
PS: Я знаю, что это не имеет практического применения, это просто вызов того, насколько вы можете сгибать и злоупотреблять синтаксисом Matlab.