C语言之递归(李白打酒)

来源:互联网 发布:中电数据在哪里 编辑:程序博客网 时间:2024/04/30 11:22
#include <stdio.h>int count = 0;void libai(int store, int flower,int alco, int pre, char *ch, int index){if(store == 0 && flower == 0){if(alco == 0 && pre == 0){int i;for(i = 0;i < 15; i++){printf("%c",ch[i]);}printf("\n");count++;}return;}if(store > 0){ch[index] = 'a';libai(store - 1, flower, alco * 2, 1, ch, index + 1);}if(flower > 0){ch[index] = 'b';libai(store, flower - 1, alco - 1, 0, ch, index + 1);}}void libai2(int alco, int store, int flower, char *ch, int index){if(store > 5 || flower > 10){return;}if(store == 5 && flower ==9){if(alco == 1){int i;for(i = 0;i < 15; i++){printf("%c",ch[i]);}printf("\n");count++;}return;}ch[index] = 'a';libai2(alco * 2, store + 1, flower, ch, index + 1);ch[index] = 'b';libai2(alco - 1, store, flower + 1, ch, index + 1);}int main(){char ch[20];//libai(5, 10, 2, -1, ch, 0);libai2(2, 0, 0, ch, 0);printf("%d\n",count);return 0;}