FJ的字符串
字符串 递归
题目
问题描述
FJ在沙盘上写了这样一些字符串:
A1 = “A”
A2 = “ABA”
A3 = “ABACABA”
A4 = “ABACABADABACABA”
… …
你能找出其中的规律并写所有的数列AN吗?
输入格式
仅有一个数:N ≤ 26。
输出格式
请输出相应的字符串AN,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。
题目分析
A1 = “A”
A2 = “ABA”
A3 = “ABACABA”
A4 = “ABACABADABACABA”
其结构其实是满二叉树
结果为二叉树的中序遍历
如果用数组实现该二叉树,需要2^26-1个数组单元(6.71089e+07)
如果构造一颗二叉树再实行遍历太过麻烦
所以我们使用二叉树的中序遍历的方法进行直接输出
我的题解
#include <iostream>
using namespace std;
void printout(int n);
int main()
{
int n;
cin >> n;
printout(n);
return 0;
}
void printout(int n) //输出函数的遍历
{
if (n) //当n不为0时进入函数体
{
printout(n - 1); //不能使用n--,因为如果使用n--,n的值会变化,不能够继续遍历,会在第一个遍历无限循环
cout << char(65 + n - 1); //65是ASCII的A,加上n再-1就能得到要输出的数
printout(n - 1);
}
else return; //void函数return空代表函数满足条件弹出
}