首页 > 解决方案 > 递归函数的帕斯卡三角形

问题描述

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);
    }

}

这段代码有问题,我找不到。当我运行它时,程序停止工作并且没有结果消失

标签: c++recursion

解决方案


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];                                                 
}  

用驱动功能来测试。我知道这不是很有效,但它应该这样做!

这基本上将为您提供帕斯卡三角形中特定行(从顶部开始)和特定列(从左侧)的数字。(均为零索引)


推荐阅读