关于递归算法汉诺塔总步数输出

如果想输出总步数,应该怎么写程序?(凑字数够了吗嘿嘿哈哈哼哼

img


可以在函数外加一个全局变量g,和函数最开始加上g++,最开始调用函数时,初始化为0,最后输出变量g


#include<bits/stdc++.h>
using namespace std;
void hnt(int n, char A, char B, char C)
{
    if (n == 1)
    {
        cout << A << "->" << C << endl;
    }
    else
    {
        hnt(n - 1, A, C, B);
        cout << a << "->" << c << endl;
        hnt(n - 1, B, A, C);
    }
}
int main(void)
{
    char a = 'a', b = 'b',c='c';
    int n;
    while (cin >> n)
    {
        hnt(n, a, b, c);
    }
    return 0;
}

1.笨办法,设置个全局变量,一开始是0,每执行一次++
2.其实总步数=2^n-1,n是层数