[已解决] 字符串翻转中关于遍历顺序的问题

[复制链接]
ghanw 发表于 2022-7-25 17:21:02
本帖最后由 ghanw 于 2022-7-25 17:39 编辑


新手,正在学习MatLab中

题目是经典的反转字符串

考虑到空间分配的时间开销,就想要从大到小的创建字符串。
于是for循环倒着来代码如下:
区别仅在第四行!(为什么直接复制不能正常显示啊)
  1. clear;
  2. str = input('', 's');
  3. len = length(str);
  4. for i = len : 1
  5.     str_r(i) = str(len - i + 1);
  6. end
  7. disp(str_r);
复制代码


然后就出现下面一幕:(在49行是因为我程序分节了,只运行这一节)

但是改成下面正着的就没问题

  1. clear;
  2. str = input('', 's');
  3. len = length(str);
  4. for i = 1 : len
  5.     str_r(i) = str(len - i + 1);
  6. end
  7. disp(str_r);
复制代码



想问下这是什么问题呢?按照C语言的逻辑第一个也是行得通的啊

这个问题可能比较低级,但请不吝告知谢谢!





最佳答案


帕拉代斯 发表于 2022-7-25 19:55:34
在matlab里,冒号运算符使用 +1 作为默认增量。for循环可以改为for i = len : -1 :1

3 条回复


ghanw 发表于 2022-7-25 17:34:22
吐槽下,光编辑格式费了我十分钟,各种乱码:L

帕拉代斯 发表于 2022-7-25 19:55:34
在matlab里,冒号运算符使用 +1 作为默认增量。for循环可以改为for i = len : -1 :1
回复此楼

ghanw 发表于 2022-7-25 22:46:26
帕拉代斯 发表于 2022-7-25 19:55
在matlab里,冒号运算符使用 +1 作为默认增量。for循环可以改为for i = len : -1 :1 ...

明白了,还是对一些语法不熟悉,感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表