帮我写一个c++程序 用递归的方法判断两条DNA链是否互补。 例如,如果str1是“ATTG”,str2是“TAAC”,那么它们是互补的。所以函数应该返回True。 bool areComplementary(string strl, string str2);
时间: 2023-03-20 07:03:35 浏览: 101
C++递归函数
好的,我明白了。以下是用递归的方式判断两条DNA链是否互补的C程序:
```c
#include <stdio.h>
#include <string.h>
int areComplementary(char str1[], char str2[], int len) {
if (len == 0) {
// 递归结束条件:如果两个字符串已经比较完毕,返回1
return 1;
} else {
// 判断两个字符是否互补
if ((str1[0] == 'A' && str2[0] == 'T') ||
(str1[0] == 'T' && str2[0] == 'A') ||
(str1[0] == 'C' && str2[0] == 'G') ||
(str1[0] == 'G' && str2[0] == 'C')) {
// 如果互补,继续比较后面的字符
return areComplementary(str1 + 1, str2 + 1, len - 1);
} else {
// 如果不互补,返回0
return 0;
}
}
}
int main() {
char str1[] = "ATTG";
char str2[] = "TAAC";
int len = strlen(str1);
if (areComplementary(str1, str2, len)) {
printf("True\n");
} else {
printf("False\n");
}
return 0;
}
```
注意:这个程序假设输入的两个字符串长度相等,如果长度不等,可能会导致数组越界。
阅读全文