递归函数如何运行问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 06:13:31
#include <iostream.h>

void main()
{
int n,k;
int comm(int n,int k);
cin>>n>>k;
cout<<comm(n,k)<<endl;

}
int comm(int n,int k)
{
if (k>n)
return 0;
else if(n==k||k==0)
return 1;
else
return comm(n-1,k)+comm(n-1,k-1);
}
谁能说下最后那个return语句是如何运算的啊,也就是不用电脑运行自己怎么算出结果呢。

这个就是在条件为k>0或者是n==k或者k==0的时候退出,其他的情况下海事执行comm这个函数,并且附的参数的值是n-1,k 另一个是n-1,k-1最后把这个返回值加起来,返回就是了

比如说我输入:
10 6
现在只符合第三个条件,所以执行comm(9,6)+comm(9,5)
……
一直执行到comm(6,6)+comm(6,2)
这样就等于1+comm(6,2)
最后执行到1+comm(4,0)
就变成了1+1=2
所以返回2。

比如说我输入:
10 6
现在只符合第三个条件,所以执行
comm(9,6)+comm(9,5)
{
comm(8,6)+comm(9,5)
{
.....
comm(6,6)+comm(9,5)
{
comm(6,6)return 1;
运算 1+comm(9,5)为
comm(8,5)+comm(8,4)
{
.....
comm(5,5)+comm(8,4)
{
1+comm(8,4)
comm(8,4)+comm(7,3)
{
........
}
}
}
}
}
}

说起来更乱. 自己去调试下.跟踪下怎么走的就知道了.