int Pascal_Tri(int row , int col)
{
if (row==col || col==0)
return 1 ;
else
{
return Pascal_Tri(row-1,col)+Pascal_Tri(row-1,col-1);
}
}
此代码存在问题,我无法发现它。 当我运行它时,程序停止工作,并且没有结果消失
答案 0 :(得分:0)
C ++ 11
#include <iostream>
#include <vector>
std::vector<int> pascal(int height, std::vector<int> curr)
{
for(int i=0; i<curr.size(); i++)
std::cout<<curr[i]<<" ";
std::cout<<std::endl;
if(height<=0)
return curr;
std::vector<int> newCurr(curr.size()+1,1);
for(int i=0; i+1 < curr.size(); i++)
newCurr[i+1] = curr[i] + curr[i+1];
return pascal(height-1,newCurr);
}
int main()
{
int row, col;
std::cin>>row>>col;
std::vector<int> rowPascal = pascal(row,std::vector<int>{1});
std::cout<< rowPascal[col];
}
具有驱动程序功能进行测试。我知道这不是很有效,但是应该可以!
基本上,这将为您提供pascal三角形中特定行(从顶部)和特定列(从左侧)的数字。 (均为零索引)
答案 1 :(得分:0)
鉴于不使用循环就很难打印三角形,这是一个使用纯递归Pascal_Tri
函数来计算数字但循环打印的解决方案:
int rowsToPrint = 5;
for (int row = 0; row < rowsToPrint; ++row)
{
for (int col = 0; col <= row; ++col)
std::cout << Pascal_Tri(row, col) << ", ";
std::cout << std::endl;
}