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

2 views (last 30 days)
dedina
dedina on 19 Nov 2022
Answered: fagaf on 19 Nov 2022
有个编程题:
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
请问为什么错了?

Accepted Answer

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

More Answers (0)

Categories

Find more on MATLAB in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!