乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范。从小白开始逐步掌握用编程解决问题。
PAT Basic Level Practice 1001 害死人不偿命的(3n+1)猜想
问题分析 & 解题思路
题目中给出了关于卡拉兹猜想的计算步骤,并要求给出按照给定的步骤执行到满足终止条件(此处为n等于1)所需要的次数。
我们知道,程序是只能执行一些重复的工作,所以程序的逻辑归根结底是条件、循环和递归的组合,最终达到按照指定步骤完成任务的目的。而此类题目直接给出了具体的步骤,与程序的本质不谋而合。程序是用来重复执行人为设定行为的,也可以说是对人行为的模拟。而解答此类题目就是直接将题设给出的步骤用编程语言语法翻译成代码逻辑,所以这种解法可以说是"模拟法"。
明白使用模拟法解答题目之后,我们需要分析题设描述的步骤如何翻译成代码逻辑(准确地说,是如何用条件、循环和递归组合出题设描述的逻辑):
- 我们需要执行一组操作,直到满足终止条件。这种动作的重复执行,使用循环和递归可以达到。递归比较复杂,而且实际工作开发中需要慎用,所以如无必要,我们不提及递归。于是,我们知道这里需要使用循环。
- 进一步,大多编程语言中,循环分为for循环和while循环。for循环用来将指定逻辑执行指定次数。while循环用来将指定逻辑执行到满足指定条件。因为题设就是要求输出所需次数&#