使用递归编写一个C语言的算术表达式求值,只含一个参数的程序
时间: 2023-06-20 10:09:11 浏览: 89
以下是一个递归求解算术表达式的 C 语言程序,只含一个参数:
```c
#include <stdio.h>
#include <stdlib.h>
int evaluate(char *expression);
int main(int argc, char **argv) {
if (argc < 2) {
printf("Usage: %s <expression>\n", argv[0]);
return 1;
}
int result = evaluate(argv[1]);
printf("%d\n", result);
return 0;
}
int evaluate(char *expression) {
// 基本情况
if (*expression == '\0') {
return 0;
} else if (*expression == '+') {
return evaluate(expression + 1) + evaluate(expression + 2);
} else if (*expression == '-') {
return evaluate(expression + 1) - evaluate(expression + 2);
} else if (*expression == '*') {
return evaluate(expression + 1) * evaluate(expression + 2);
} else if (*expression == '/') {
return evaluate(expression + 1) / evaluate(expression + 2);
} else {
return atoi(expression);
}
}
```
该程序将命令行参数中的表达式传递给 `evaluate` 函数,该函数通过递归地处理表达式来计算其结果。基本情况是当表达式字符串为空时返回 0,或者当遇到数字时返回该数字的整数值。对于运算符,函数将递归地调用自身以计算其左右操作数,并在操作数上执行相应的运算。
阅读全文