问题描述
FJ在沙盘上写了这样一些字符串:
A1 = “A”
A2 = “ABA”
A3 = “ABACABA”
A4 = “ABACABADABACABA”
… …
你能找出其中的规律并写所有的数列AN吗?
输入格式
仅有一个数:N ≤ 26。
输出格式
请输出相应的字符串AN,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。
样例输入
3
样例输出
ABACABA
解题思路 :
在之前的练习题中,遇到过有关于字母表中字母有规律的输出蓝桥杯试题12 基础练习 字母图形,对第一位博主的解答印象比较深刻,其将字母转换成对应的ASCII码,发现规律。
于是再观察中发现,输出的字符串中,最中间的数=65+n-1,其两边的数就是str(n-1)
即string(n)=string(n-1)+chr(65+n-1)+string(n-1)
发现规律之后就可以用递归的方法求解了
def func(n):
if n==1:
return str("A")
return func(n-1)+str(chr(65+n-1))+func(n-1)
n=int(input())
print(func(n))
其实,早在大一上学期的学习中,就遇到过递归,记得当时老师也是仔细讲解了,但是现在的我,面对递归的题目下意识就是逃避,认为它很难。但是今天,可以说鼓起勇气觉着自己试一试吧,看出了规律,却没有办法用递归的方法解决是很难过的,“我本可以”。
从递归方法的格式开始模仿,思考规律该如何用正确的式子表示,写成捋顺之后有些激动忘记了输入输出,以及C语言的char 和python的chr有些许不同
不是很容易,但也可以
递归算法——超详细讲解(图文并茂)这篇文章对递归算法的讲解很棒