matlab怎样实现函数的递归调用?如以下程序:

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab怎样实现函数的递归调用?如以下程序:相关的知识,希望对你有一定的参考价值。

function s=mysum(n) if n==1 s=1; else s=n+mysum(n-1); end clear; clc; s=mysum(5)

参考技术A 程序可以写成
12345678910function zdclear;clc;s=mysum(5) function s=mysum(n)if n==1 s=1;else s=n+mysum(n-1);end
保存到一个文件,然后运行即可得到结果15。

[VB]是不是可以在函数中调用自己?

VB 例如一个用户函数f:

public function f(x as single) as single
...
a = f(a) <--是否能在这里调用f本身?
...
end function

我记得好象不可以,会出错;但这个操作好象是叫"迭代"吧?(记不清了) 如果实现将很好用,该怎样实现呢?
只有一楼正经

234楼都什么菜鸟

参考技术A 可以
但小心,调用自己有可能造成无限循环,所以在过程\函数中要有跳出的语句
参考技术B VB完全可以使用递归算法,在函数体f内可以出现函数f本身,以下求阶乘的程序在VB6通过

Public Function f(x As Integer) As Integer

If x = 1 Then
f = 1
Else
f = x * f(x - 1)
End If

End Function

Private Sub Command1_Click()
MsgBox f(5)

End Sub

如果把f = x * f(x - 1)改成f = x * f(x)或f = x * f(x + 1),明显不合理,但是VB也会通过,但是执行的时候会产生堆栈溢出的错误
参考技术C 楼主提到的这种调用方式叫做递归。

vb不熟悉,不过在大多数现代编程语言中,都可以使用递归调用。可以用来简单的解决某些特殊的问题,比如计算阶乘。但是递归层数太高时,效率会明显降低,因为要用到大量的堆栈操作。
参考技术D 可以使用,您大约记错了。

public function f(x as single) as single
...
if a = 1 then
f = 2
else
f = 0
end if

a = f(a) <--这样a就得2了
...
end function本回答被提问者采纳
第5个回答  2005-10-02 我认为可以,因为万事皆有可能

以上是关于matlab怎样实现函数的递归调用?如以下程序:的主要内容,如果未能解决你的问题,请参考以下文章

如何用Qt调用matlab生成的动态库

递归基础

递归函数

函数递归内置函数

matlab中的plot函数怎样在c语言中实现

递归递推和迭代的区别