请解释一下此段程序中solve的函数过程中的for语句里面的solve函数怎么理解?(看得懂Pascal或VB的都可以)
Pascal:varn,m:integer;functionsolve(n,m:integer):integer;vari,sum:integer;beginifm=1t...
Pascal:
var n,m:integer;
function solve(n,m:integer):integer;
var i,sum:integer;
begin
if m=1 then
begin
solve:=1;
exit;
end;
sum:=0;
for i:=1 to n-1 do
sum:=sum+solve(i,m-1);
solve:=sum;
end;
begin
readln(n,m);
writeln(solve(n,m));
end.
Visual Basic:
Dim n As Integer, m As Integer, x As Variant
Private Function solve(n As Integer, m As Integer) As Integer
Dim i As Integer, sum As Integer
If m = 1 Then
solve = 1
Exit Function
End If
sum = 0
For i = 1 To n - 1
sum = sum + solve(i, m - 1)
Next i
solve = sum
End Function
Private Sub Form_Load()
n = InputBox("Please input n")
m = InputBox("Please input m")
Text1.Text = solve(n, m)
End Sub 展开
var n,m:integer;
function solve(n,m:integer):integer;
var i,sum:integer;
begin
if m=1 then
begin
solve:=1;
exit;
end;
sum:=0;
for i:=1 to n-1 do
sum:=sum+solve(i,m-1);
solve:=sum;
end;
begin
readln(n,m);
writeln(solve(n,m));
end.
Visual Basic:
Dim n As Integer, m As Integer, x As Variant
Private Function solve(n As Integer, m As Integer) As Integer
Dim i As Integer, sum As Integer
If m = 1 Then
solve = 1
Exit Function
End If
sum = 0
For i = 1 To n - 1
sum = sum + solve(i, m - 1)
Next i
solve = sum
End Function
Private Sub Form_Load()
n = InputBox("Please input n")
m = InputBox("Please input m")
Text1.Text = solve(n, m)
End Sub 展开
3个回答
展开全部
这应该是一道提高组初赛题的一部分,
是一个调,一个特殊的调用,pascal上叫递归,就是自己调用自己。就是上面sum = sum + solve(i, m - 1)。
是一个调,一个特殊的调用,pascal上叫递归,就是自己调用自己。就是上面sum = sum + solve(i, m - 1)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这里用了递归,参加初赛的人应该都知道
所谓递归,就是自己调用自己,比如函数
当函数中出现跟自己名字相同的函数就再次使用自己
所谓递归,就是自己调用自己,比如函数
当函数中出现跟自己名字相同的函数就再次使用自己
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这里貌似是无限递归,知道M=0为止
而且这应该是再N>=M的时候才会有数
而且这应该是再N>=M的时候才会有数
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询