算法训练 递归 s01串

问题描述
  s01串初始为"0"
  按以下方式变换
  0变1,1变01
输入格式
  1个整数(0~19)
输出格式
  n次变换后s01串
样例输入
3
样例输出
101
数据规模和约定
  0~19
 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<string.h>
 4 
 5 int n;
 6 int c = 0;
 7 
 8 
 9 void fun(char *a)
10 {
11     int i;
12     char b[10000];
13     memset(b, 0, sizeof(b));
14     int k = 0;
15 
16     for (i = 0; i < strlen(a); i++)  //0->1  1->01
17     {
18         if (a[i] == '0')
19             b[k++] = '1';
20         if (a[i] == '1')
21         {
22             b[k++] = '0';
23             b[k++] = '1';
24         }
25     }
26 
27     c++;
28     if (c == n)
29     {
30         for (i = 0; i < k; i++)
31         {
32             printf("%c", b[i]);
33         }
34         return;
35     }
36     else
37     {
38         fun(b);
39     }
40 }
41 
42 int main()
43 {    
44     char a[10000] = { '0' };
45     scanf("%d", &n);
46     if (n == 0)
47     {
48         printf("0");
49     }
50     else
51     {
52         fun(a);
53     }
54     
55     return 0;
56 }

 

posted @ 2020-04-09 17:01  Xxaj5  阅读(209)  评论(0编辑  收藏  举报