函数的调用问题


http://img1.mukewang.com/5aea63f10001828510400780.jpg
想写一个函数判断一个数是否为素数,为什么我写的这个没有输出呢?

慕哥3196215
浏览 1097回答 2
2回答

onemoo

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。

我吃西瓜很快

把图中框起来的if放到for外面
打开App,查看更多内容
随时随地看视频慕课网APP