从(0,0)到(m,n),每次走一步,只能向上或者向右走,有多少种路径走到(m,n)
来自腾讯的面试题。
主要是要把递归的流程分析清楚,这个问题就是一个二叉树DFS类似的问题,判断稍微复杂,每步都只能往两个方向走,右或者上,
截止条件是:0==m&&0==n
输出存储的路径,并且将total计数加1。
如果m<0||n<0
返回
否则分别走两条路:n-1,m-1
对比我原来的逻辑:
这样的话我会在第一次输出之后,m,n==0,先进入2方向分支,n-1,然后不断地进入2方向分支,进入死循环最终导致stack overflow。
我应该判断m,n是否超出边界,超出则返回,与DFS到达空指针的地方返回一样。
#pragma once
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 1000
//10000时发生stackoverflow
typedef struct Coordinate
{
int