C++再帰的実現と理解


ここ数日、牛客网の问题库で、これまでずっと自分のプロジェクトのことで忙しくて、普段よく使う言叶になるのはpythonですが、牛客网のブラシ问题の时に1つの言语だけを熟知するのははるかに足りないことを発见して、大学の时にC言语を学んだことがありますが、2级の证明书を手に入れた后で実戦したことがなくて、C++もいくつか接触したことがあって、C++についてのプロジェクトをしたことがあります.あとはゆっくり機械に触れて勉強したり、深く勉強したりして、pythonの使い勝手を痛感したので、C++も放置しました.ここ数日、これらの言語を拾おうと努力しています.数日、牛客のネット上で再帰的なテーマを見ました.
xあり×y x × yのメッシュは、このメッシュ上で左上から右下に移動するには、格子点のみを移動し、右または下にしか移動できません.アルゴリズムを設計して、小団の歩き方を計算してください.2つの正の整数int x,int yを与えて、小団の歩き方の数を返してください.
ユーザーhzwaxxのC++コードを見て、思わず記録しました.コードは次のとおりです.
#include 
using namespace std;
int step(int m,int n){
    if (m == 0 || m == 0)
        return 1;
    return step(m - 1,n) + step(m,n - 1);
}
int main(){
    int x,y;
    cin >> x >> y;
    cout << step(x,y) << endl;
}

この問題は再帰的な思想を伝えており、最終的には小団は右下に行き、小団が右の境界や下の境界にぶつかると、彼は一つの方向に行くしかない.入力などの再帰的な実装が必要です
3 2

出力値:
10

3 2をstepに転送し,step(2,2)+step(3,1)を返し,step(2,2)とstep(3,1)は再帰演算に関与し続け,これによりstep(3,2)=step(2,2)+step(3,1)=step(1,2)+step(2,1)+step(2,1)+step(2,1)+step(2,1)+step(3,0)=step(0,2)+step(1,1)+step(1,1,0)+step(1,1)+step(1,0)+step(1,0)+step(1,0)+step(3,0)=step(0,2)+step(0,0)+step(1,0)+step(1,0)+step(1,0)+step(1,0)+step(1,0)+step(1 1)+step(1,0)+step(1,0)+step(3,0)=10