【发布时间】:2015-06-09 23:05:50
【问题描述】:
我有一项难以处理的任务。任务是:创建一个递归函数,可以生成一个长度为 N (N AABACA - 因为'A'是'A'; ABCBCA - 因为 'BC' 对应于 'BC' 而 ABCABC 也是错误的,因为 'ABC' 对应于 'ABC'。
我做了一个版本的程序,但是是一种迭代的方式,这里是代码:
#include <iostream>
#include <ctime>
using namespace std;
const char letters[] = "ABC";
char generate_rand()
{
return letters[rand() % 3];
}
int check(char *s, int pos)
{
for (int i = 1; i <= (pos + 1)/2; i++)
{
int flag = 1;
for (int j = 0; j < i; j++)
if (s[pos-j] != s[pos-i-j])
{
flag = 0;
break;
}
if (flag)
return 1;
}
return 0;
}
int main()
{
char s[100];
int n;
cout << "enter n: ";
cin >> n;
srand(time(NULL));
for (int i = 0; i < n; i++)
{
do
{
s[i] = generate_rand();
} while (check(s, i));
cout << s[i] << " ";
}
cout << " ok" << endl;
system("pause");
return 0;
}
我觉得递归函数的入口可能需要是字符串中的字符数,它会寻求与相邻字符串重复,每次加1,但不超过原字符串长度的一半,但不知道怎么做。
【问题讨论】:
-
您的代码似乎不包含任何递归函数。
标签: c++ string function recursion substring