杭州哪里学钢琴好:递归不开窍怎么办呀 谢谢大家了

来源:百度文库 编辑:高考问答 时间:2024/04/27 13:46:51

递归啊

入口()
{
这是最后一步么?
如果是 那么我做最后一步处理
如果不是 请别人做需要重复的部分
}

举个例子 介乘

long jc(long num)//入口
{
if(num = 1) //这是最后一步么?
// 这里的最后一步当然是算1的阶乘咯
{
return 1; 1的阶乘当然是1
}
else//如果不是最后一步怎么办呢?
{//当然是把工作推给别人咯
return num * jc(num-1); //num-1阶乘的运算就请别人做咯
}
}

递归简单地说就是一个过程自己调用自己。在递归调用中,一个过程执行的某一步要用到它自身的上一步(或上几步的)结果。
递归调用在完成阶乘运算、级数运算、幂指数运算等方面特别有效。
例如:计算N!
求N的阶乘可转化为N*(N-1)!。
编写递归过程:
Function Factorial(N As Integer)As Long
If N>0 Then
Factorial=N*Factorial(N-1) '关键!递归调用!
Else
Factorial=1
End If
End Function
这样递归调用就变成了这样:
Factorial(5)=5*Factorial(4)
Factorial(4)=4*Factorial(3)
Factorial(3)=3*Factorial(2)
Factorial(2)=2*Factorial(1)
Factorial(1)=1
所以Factorial(5)=5*4*3*2*1
试验:
Sub Command_Click()
Dim N As Integer
N=InputBox("请输入数:")
MsgBox N & "!=" & Factorial(N)
End Sub

我也不十分懂这个递归!好像没看到什么实在的作用,,你

看这,这它算阶乘,,好像是反到把算问题复杂了,!!

我认为不要去想每一步,你就认为这个方法能完成你所做的要求就行~~~

雨愁轩的讲解很通俗易懂, 把我想说而又说不出的东西都说出来了. 虽然教科书没有这样讲的, 但很实际. 楼主好好看一下他的.

至于楼上说的没看到什么实在的作用, 那只能说明你没碰到那些问题而已. 的确, 阶乘, 还有斐波那契数列, 不用递归也能实现, 可是汉诺塔这样的问题你试一下, 不用递归能不能实现? 能, 但要用复杂的数据结构, 还不如递归方便

这个讲的非常好呀,他举简单的例子是为了让你看清楚递归怎么写,复杂的递归多得是,比如8皇后什么的