C语递归题
输入一个二进制数,当碰到除了'1'和'0'以外的字符停止输入,最后输出所对应的十进制数,并且用递归解决。 这是一个经典的二进制转十进制的问题,可以使用递归来解决。以下是示例代码:
#include <stdio.h>
#include <stdlib.h>
int binaryToDecimal(char* binary, int len) {
if (len == 1) {
return binary - '0';
} else {
return (binary - '0') + 2 * binaryToDecimal(binary, len-1);
}
}
int main() {
char binary;
int len = 0;
char c = getchar();
while (c == '0' || c == '1') {
binary = c;
c = getchar();
}
printf("%d\n", binaryToDecimal(binary, len));
return 0;
}
首先,我们定义了一个函数 binaryToDecimal ,它接受一个二进制字符串和字符串长度作为参数,并返回对应的十进制数。在函数内部,我们首先检查字符串长度是否为1。如果是,直接返回该字符对应的数字。否则,我们将字符串的最后一位转换为数字,并将其乘以2的n-1次方,其中n是字符串长度。然后,我们递归调用 binaryToDecimal 函数,将字符串长度减1,继续计算剩余部分的十进制值。最后,将两个值相加并返回。
在 main 函数中,我们首先声明一个字符数组 binary 和一个整数变量 len ,用于存储输入的二进制字符串和字符串长度。然后,我们使用 getchar 函数逐个字符读取输入,直到遇到除了'1'和'0'以外的字符为止。然后,我们调用 binaryToDecimal 函数,并将结果打印到控制台上。
希望这可以解决你的问题。 《C语 递归题》 #include <stdio.h>
#include <stdlib.h>
int bi_to_de(char *s, int len, int index);
int main() {
char s;
int i = 0;
while (1) {
char c = getchar();
if (c == '0' || c == '1') {
s = c;
} else {
s = '\0';
break;
}
}
int len = i;
int result = bi_to_de(s, len, 0);
printf("%d", result);
return 0;
}
int bi_to_de(char *s, int len, int index) {
if (index == len) {
return 0;
} else {
int num = s - '0';
return num * (1 << (len - index - 1)) + bi_to_de(s, len, index+1);
}
}
有用请设置最佳答案
页:
[1]