蓝桥杯 基础练习 FJ的字符串 递归

FJ的字符串 递归


问题描述  FJ在沙盘上写了这样一些字符串:
  A1 = “A”
  A2 = “ABA”
  A3 = “ABACABA”
  A4 = “ABACABADABACABA”
  … …
  你能找出其中的规律并写所有的数列AN吗?
输入格式  仅有一个数:N ≤ 26。
输出格式  请输出相应的字符串AN,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。
样例输入3
样例输出ABACABA
这道题,仔细分析需要输出的数据,觉得怎么有点熟悉呢?再结合N的范围,可以知道,就是一个关于26个大写字母的递推式啊。第n个递推式的内容就是:“第n-1个递推式”“大写字母N”“第n-1个递推式”。那么解决的时候就可以用递推的思想了啊!
因为递推与递归思想类似,只是一个自底向上,另一个自顶向下,所以我选择的是递归算法(因为我不是特别会递归,所以想进行练习):调用“第n-1个递推式”,输出“大写字母N”,再次调用“第n-1个递推式”。
按照递归的三要素进行分析,就是:
1、确定递归功能:输出第n项的递推式(输出时包含了第n-1项的内容)
2、确定递归结束条件:n==1时,输出A
3、确定递归表达式:
letter(n-1);
printf("%c",n-1+‘A’);
letter(n-1);
//letter为递归函数名
一定要记清楚递归函数的定义:函数对自身进行调用
下面,放上我的第一个成功的递归源码:

#include<stdio.h>
int letter(int n)
{
 if(n==1)
   printf("A");
 else
 {
  letter(n-1);
  printf("%c",n-1+'A');
  letter(n-1);
   }  
 return 0;
 } 
int main()
{
 int n;
 scanf("%d",&n);
 letter(n);//开启递归调用 
 
 return 0;
 } 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值