相关疑难解决方法(0)

递归匿名函数Matlab

我知道这不是匿名函数的用途,但就像我试图通过匿名函数创建递归函数一样.递归函数的原型显然是阶乘函数.问题是,这是很难做出区分的情况下的匿名函数.到目前为止我设法做的是:

f=@(cn,n,f)eval('if n>1; f(cn*n,n-1,f);else;ans=cn;end');
f=@(n)f(1,n,f);
Run Code Online (Sandbox Code Playgroud)

或者:

f=@(cn,n,f)eval('if n>1; f(cn*n,n-1,f);else;disp(cn);end');
f=@(n)f(1,n,f);
Run Code Online (Sandbox Code Playgroud)

不太令人满意的是,直接分配时仍然无法使用此功能,a=f(3)仍会产生错误,因为eval没有得到值.

所以我的问题是,您是否可以通过匿名函数实际执行递归函数,例如以允许例如a=f(3)仅依赖于本机matlab函数(或者您可以在命令行中创建的函数,如我在示例中所做的那样)计算阶乘的方式?

PS:我知道这没有任何实际用途,这只是对你可以弯曲和滥用Matlab语法的挑战.

recursion matlab anonymous-function

13
推荐指数
1
解决办法
950
查看次数

三元运算在八度中有效吗?

问题是三元运算有效,因为我无法在网上找到任何与之相关的文档。而且我还发现三元在MATLAB 中是不可能的,因此任何建议和答案都将在此处受到赞赏。

#带三元运算的代码

taxes = (income > 50000)*(((income-50000) * 0.20)+(0.10*50000)) + (~(income > 50000))*0.10 *50000
#Condition True and this computation False then this computation
Run Code Online (Sandbox Code Playgroud)

#代码与if和else

if (income) > 50000
#income = income - 50000
#Taxed at 10% (i.e 0.10) for $ 50000
#taxes = 50000 * 0.10
#Rest income will be Taxed at 20% (i.e 0.20)
taxes = 50000 * 0.10 + ((income-50000) * 0.20)
else
#Taxed at 10% (i.e 0.10)
taxes = income * 0.10
endif …
Run Code Online (Sandbox Code Playgroud)

matlab octave conditional-operator

5
推荐指数
1
解决办法
181
查看次数