求问一个循环编程 我为什么写错了。

2 次查看(过去 30 天)
dedina
dedina 2022-11-19
回答: fagaf 2022-11-19
有个编程题:
x<1时 y=x
1<=x<10时y=2x-1
10<=x时 y=3x-11
我是这么写的
clc;clear all
if i<1
y=i;
elseif i>=1&i<10
y=2*i-1;
elseif i>=10
y=3*i-11;
end
i=input('给个数=','s');
S=y
请问为什么错了?

采纳的回答

fagaf
fagaf 2022-11-19
你没理解程序中关于定义和赋值的概念。定义是声明某个东西是什么,该怎么做;赋值则是直接执行命令操作。你想要实现的功能属于数学中的定义,但是你的程序则是赋值型的,定义这种数学表达,在程序里面是通过 数据结构 函数 来实现的
具体来说,你的这种思维仍然是数学中的思维,属于编程范式(programming paradigm)中的函数式编程(functional programming)里的惰性求值特性。惰性求值的意思是,当用等号连接表达式后,并不立即计算,而是等到相关变量的值确定之后再计算。比如你上面变量 i 的值并没有给,等到输入值之后,y的值才会按照上面的规则被计算。函数式编程语言是与数学思维方式最接近的一门编程语言,因此也是跟自然语言模式最接近。这两种类型语言的区别就跟上面的定义和赋值的差别很类似。然而,Matlab是命令式编程语言,所以不支持上述特性。
但是这并不是说不能实现类似的功能了,可以通过函数来实现这种功能,而且你应该把输入放在判断结构之前。如果你不写成函数形式,它只能不断复制粘贴一次一次的运行(执行命令的过程)。
如果想要实现你代码上这种形式的定义,可以用Mathematica的来实现,它是一种函数式编程语言,另外还有好多比如Haskell,Lisp等等。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 MATLAB 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!