C++ 递归中函数的多次调用
我使用递归实现maxPathSum函数,我不知道在函数中使用两个调用时会发生什么,我知道这就是调用 二进制递归,并且知道如何从这个问题的回答中思考它 但是当我写代码时,它没有给我正确的答案 [注意]唯一需要的方向是向右和向下C++ 递归中函数的多次调用,c++,recursion,C++,Recursion,我使用递归实现maxPathSum函数,我不知道在函数中使用两个调用时会发生什么,我知道这就是调用 二进制递归,并且知道如何从这个问题的回答中思考它 但是当我写代码时,它没有给我正确的答案 [注意]唯一需要的方向是向右和向下 #include <iostream> #include<algorithm> using namespace std; const int MAX=3; int grid[MAX][MAX]={ {5,1,
#include <iostream>
#include<algorithm>
using namespace std;
const int MAX=3;
int grid[MAX][MAX]={
{5,1,2},
{6,4,8},
{1,8,9}
};
bool valid(int r, int c);//check not get out grid
int maxPathSum(int r,int c);
int main()
{
int sum=0;
for(int i=0;i<MAX;i++)
sum += maxPathSum(i,i);
cout<<"the sum of the longest path is: "<<sum;
}
int maxPathSum(int r,int c){
if(!valid(r,c))
return 1;
//Reach the last element in the last right down
if(r == MAX-1 && c == MAX-1)
return grid[r][c];
int path1=maxPathSum(r,c+1);//Right
int path2=maxPathSum(r+1,c);//down
return grid[r][c]+max(path1,path2);
}
bool valid(int r, int c){
if(r > MAX-1)
return false;
if(c > MAX-1)
return false;
return true;
}
你赚了双倍的钱
return grid[r][c]+max(path1,path2)
这段代码已经对路径上的元素求和
for(int i=0;i<MAX;i++)
sum += maxPathSum(i,i);
对于(int i=0;i如果(!valid(r,c))返回1;
这种情况不应该是返回0
?欢迎使用StackOverflow。请阅读并遵循帮助文档中的发布指南。适用于此处。特别是,包括问题案例的实际和预期输出。
for(int i=0;i<MAX;i++)
sum += maxPathSum(i,i);