scratch数字之谜——数字黑洞123

通过例子来认识一下数字黑洞123

任意一个自然数,数出这个数字中的偶数与奇数的个数以及这个数中所有数字的总个数;将偶数个数、奇数个数和总个数合并成一个新数;

例如数字:1234567890;

数出该数字中的偶数个数,在本例中为2、4、6、8、0,总共有 5 个;

数出该数字中的奇数个数,在本例中为1、3、5、7、9,总共有 5 个;

数出该数字的总个数,本例中为 10 个。

将答案按 “偶奇总”的顺序,排出得到新数为:5510。

我们会发现并没又进入这个黑洞;别急,让我们再用上面的方法算一次。5510运算可得到新数134。将新数134按以上算法重复运算,最后得到新数:123。

有同学会问,“老师,这也不能说明说有数字都有这样的规律呀,如果数字很大很大呢?”

那么今天我们就用scratch去设计一个程序,使用这个程序可以检查任意一个数字,看看它们是不是都会掉到黑洞123里吧!

开始写程序

第一步:定义一个存放初始自然数以及运算过程中得出的新自然数的的列表

第二步:通过询问–回答模块来请求输入待验证的自然数

第三步:(重点)定义一个数字黑洞123的函数

  • 设置三个变量:奇数个数、偶数个数以及总个数
  • 使用循环变量判断这个自然数中每个数字是偶数还是奇数
  • 将通过判断得到的结果添加到变量奇数个数和偶数个数中
  • 将奇数个数、偶数个数和总个数相连组成一个新数字
  • 将得出的新数字重新放入这个函数中进行运算

在定义数字黑洞123函数的时候,我们在函数中又调用了自身,那么如果在函数中调用自身,这样的函数又叫什么呢?

“我知道,我知道,叫递归函数!”

对,真聪明,这样的函数被称为递归函数,在执行递归函数时,函数将反复调用其自身,每调用一次就会进入下一层,一个递归函数必须有结束条件,那么我们通过上面的例子再来理解一下递归函数吧!

  • 结束条件:首先这个递归函数的结束条件是得出的数字为123,也就是当得出数字123时,程序停止运行;
  • 第一层:我们给出一个初始数字1234567890,在第一次执行函数时得出新数:5510,因为5510≠123,所以进行第二次判断,也就是进入下一层;
  • 第二层:将新数字5510放入函数中,得出新数:134,因为134≠123,所以进行第三次判断,又进入下一层;
  • 第三层:将新数字134放入函数中,得出新数字123,因为123=123,所以达到这个递归函数的结束条件,程序停止。

我们来一起看一下完整的程序吧: file

黔西南 触摸未来
我们正身处一个只要愿意思考,就能改变世界的时代