FJ的字符串(1-3)—递归
题目描述:
FJ在沙盘上写了这样一些字符串: A1 = “A” A2 = “ABA” A3 = “ABACABA” A4 = “ABACABADABACABA” … … 你能找出其中的规律并写所有的数列AN吗?
输入:
仅有一个数:N ≤ 26
输出:
请输出相应的字符串AN,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。
输入样例
3
输出样例
ABACABA
题目来源:
思路/题点:
- 输入数字转换成对应的大写字母:先将数字+‘0’,转换成字符型数字‘数字’,然后‘数字’+16即可得1-26对应的大写字母ABCD…Z。
- 观察题目描述可知,如果想要输出A4必先知道A3,如果输出A3要知道A2,输出A2要知道A1,显然满足递归的性质,递归的终止条件为A1:输出A。
题解代码(C++)
#include<cstdio>
//数字转换成字符(大小写字母)
//先将数字转成字符数字,即数字+'0',然后在加16即可
char numToC(int n){
char a;
a=n+'0'+16;
return a;
}
//递归:输出第n项要借助第n-1项,以此类推...
void PrintA(int n){
if(n==1) printf("A");
else{
PrintA(n-1);
printf("%c",numToC(n));
PrintA(n-1);
}
}
int main(){
int n;
scanf("%d",&n);
PrintA(n);
return 0;
}