reverse_string3(ch+1);//ch+1,而不是ch++ *right = tmp;//赋值 为什么这两句不能调换
时间: 2024-01-08 19:02:41 浏览: 29
这两句不能调换的原因是,递归函数 `reverse_string3` 的目的是将字符串反转,而调换这两句会导致字符串在每次递归调用后恢复到原始状态,而不是实现反转。
在 `reverse_string3` 函数中,`reverse_string3(ch+1)` 是递归调用,目的是将 `ch` 指针向右移动一位,处理下一个字符。这样就可以依次处理字符串中的每个字符,实现反转。
而 `*right = tmp` 是在递归调用之后执行的,它的作用是将之前交换过的字符值重新赋回右侧字符指针 `right` 指向的位置,以保持字符串的完整性。
如果将这两句调换,即先执行 `*right = tmp` 再执行 `reverse_string3(ch+1)`,那么在每次递归调用后,字符串将恢复到原始状态,无法实现反转。因此,这两句的顺序不能调换。
相关问题
void reverse_string3(char* ch)//递归 { char* left = ch; char* right = ch + strlen(ch) - 1; if (*ch != '\0') { char tmp = *left;//提取 *left = *right;//赋值 *right = '\0';//赋\0 reverse_string3(ch+1);//ch+1,而不是ch++ *right = tmp;//赋值 } }
这是一个递归函数 `reverse_string3`,用于反转字符串。函数接受一个字符指针 `ch`,表示待反转的字符串。
函数首先定义了两个指针 `left` 和 `right`,分别指向字符串的首字符和尾字符。然后通过递归实现字符串的反转。
在递归过程中,首先判断当前字符是否为字符串的结束符 `\0`,如果不是,则执行以下步骤:
1. 提取左侧字符 `tmp`,即当前字符的值。
2. 将左侧字符指针 `left` 指向的字符值设置为右侧字符指针 `right` 指向的字符值,实现字符值的交换。
3. 将右侧字符指针 `right` 指向的字符值设置为结束符 `\0`,将交换后的右侧字符置为新的字符串结束符。
4. 递归调用 `reverse_string3` 函数,并传入参数 `ch+1`,即将字符串指针向右移动一位,指向下一个字符。
5. 将交换前的左侧字符值 `tmp` 重新赋给右侧字符指针 `right` 指向的字符。
通过递归调用和字符值交换操作,实现了字符串的反转。请注意,在每次递归调用中,字符串指针 `ch` 都向右移动一位,以处理下一个字符。
编写jsp页面实现1+1/3+1/5+…+1/99之和
首先,我们可以使用一个循环来计算并打印出1/1-1/2 1/3-1/4 … 1/99-1/100的和。代码如下:
```jsp
<%
double sum = 0.0;
int j = 1;
for (int i = 1; i <= 100; i++) {
sum += 1.0 / i * j;
j = -j;
}
out.print("sum=" + sum);
%>
```
接下来,我们可以通过循环找到10个整数中的最大值。代码如下:
```jsp
<%
int[] arr = {1, -1, 19, 2, 3, 98, 7, 90, 20, -67};
int ret = arr[0];
for (int i = 1; i < 10; i++) {
if (ret < arr[i]) {
ret = arr[i];
}
}
out.print(ret);
%>
```
然后,我们可以通过嵌套循环打印出9*9乘法口诀表。代码如下:
```jsp
<%
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
out.print(i + " * " + j + " = " + (i * j) + " ");
}
out.println("<br>");
}
%>
```
最后,我们可以编写一个递归函数来实现数组内容的逆序。代码如下:
```jsp
<%
void reverseString(String str) {
if (str.length() <= 1) {
out.print(str);
} else {
reverseString(str.substring(1));
out.print(str.charAt(0));
}
}
reverseString("12345");
%>
```
回答完问题后的
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)