【发布时间】:2020-08-06 16:08:14
【问题描述】:
#include<iostream>
using namespace std;
int pascal(int row, int col)
{
if (col == 0 || col == row)
{
return 1;
}
else
{
return pascal(row - 1, col - 1) + pascal(row - 1, col);
}
}
int main()
{
system("cls");
int row;
cout<<"Enter n : ";
cin>>row;
for (int i=0;i<row;i++)
{
for(int col =0;col<=i;col++)
cout<<pascal(i,col);
cout<<"\n";
}
return 0;
}
我了解主函数的成本分析,但我无法理解递归函数的成本分析。递归部分 pascal(i-1,j-1) + pascal(i-1,j) 运行了多少次?
【问题讨论】:
-
好吧,您可以尝试添加一些调试逻辑,以查看对于某些给定的
i, j值它实际运行了多少次(在顶级调用之前将全局变量设置为 0,并具有函数每次调用时加 1,看看结果如何)。看看你是否可以在结果中检测到一个模式,然后看看你是否可以证明它(提示:尝试使用归纳法)。