为了账号安全,请及时绑定邮箱和手机立即绑定

函数的调用问题

函数的调用问题

C
慕哥3196215 2018-05-03 09:21:52
想写一个函数判断一个数是否为素数,为什么我写的这个没有输出呢?
查看完整描述

2 回答

?
onemoo

TA贡献883条经验 获得超454个赞

fun 函数是用来判断素数的?

首先,根据 for 循环的控制条件,参数 n 如果小于 2,则 for 循环根本不会开始循环,函数直接返回。

如果 n 够大,才会执行 for 循环。你在其中尝试将参数 n 与其他数相除,每次 13 行 if 判断时:

  • 如果找到能除尽的就跳出循环了(14行),然后 fun 函数就结束了,什么也不会输出。

  • 如果遇到没有除尽的,则执行 15 行的 if 语句。同样因为 for 的控制条件,i 一定是小于 n 的,所以一定会进入 else 分支,输出 no。 也就是说只要输入 n 大于 2,那么在确定它不是素数之前会输入一串 no...

以上这个逻辑根本就没法判断素数啊!


更重要的问题在:

第 26 行调用 fun 时传入的 n 是第 24 行的那个,然而这个 n 在定义时并没有赋予初值,那它的初值是随机的。 input 中接收输入的那个 n 是 input 的局部变量,和 26 行传入 fun 的无关。所以不管你输入了什么数,都和 fun 没关系。

虽然这个 n 初值是随机的,但多数情况下也可能会是 0。这时候 fun 直接就返回了,所以什么输出也没有。  这应该是你看到的结果。

顺便再强调一下:这样未赋予初值的局部变量的初值是不确定的,千万不要以为一定会是 0。

查看完整回答
反对 回复 2018-05-03
?
我吃西瓜很快

TA贡献39条经验 获得超13个赞

https://img1.sycdn.imooc.com//5aea738800011b5902790253.jpg

把图中框起来的if放到for外面

查看完整回答
反对 回复 2018-05-03
  • 2 回答
  • 0 关注
  • 1057 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信