递归实例
学习前提:
自己了解递归定义、多个字符串连接、sprintf()的用法和注意[*]、<< 左移符号知识、二叉树中序遍历等。
题目描述:
FJ的字符串
FJ在沙盘上写了这样一些字符串:
A1 = “A”
A2 = “ABA”
A3 = “ABACABA”
A4 = “ABACABADABACABA”
… …
你能找出其中的规律并写所有的数列AN吗?
输入格式:
仅有一个数:N ≤ 26。
输出格式:
请输出相应的字符串AN,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。
样例输入:
3
样例输出:
ABACABA
思路详解:
这道题只是考虑输出,不用存储中间结果。其次,采用递归的做法。再则,观察可以看出输出呈现中间对称,并且和二叉树的中序遍历相似。所以采用二叉树遍历的类似函数(并且是一个返回空值的函数,可以不用返回char或者)比设置sprintf和strlen求解更加简单。
代码详解:
1 #include<stdio.h> 2 void p(int n) 3 { 4 if(n==1) 5 { 6 printf("A"); 7 return ; 8 } 9 else 10 { 11 p(n-1); 12 printf("%c",'A'+n-1); 13 p(n-1); 14 } 15 } 16 int main() 17 { 18 int n; 19 scanf("%d",&n); 20 p(n); 21 }
雪儿言