编写程序能力高低:在于程序思想的广度,思想越广越能解决难题
1.
num是NaN,但是NaN不等于NaN,NaN是number类型。
2.思路:解题思路不要从头来,不要跟着条件的先后来写程序
而是要考虑:是不是这些条件要同时满足,那我把这些可能性写在嵌套循环里去匹配,把限制条件都写在最内侧循环,那限制条件就能作用于每一个循环了。
使用多层嵌套来满足所有匹配条件,且要把条件都放在最内层循环里。
3。 + 号后面可用“ ” 包裹住符号
4.
第一个for 决定打印几行,在第一个for 内开始声明空字符串,用来添加符号,给空,每一行开始需要清空。
第二个for 用来打印方块
第三个for用来打印圆点 第二个与第三个for里的限制条件都与 第一个for里的i相关。
5.程序会封装功能,帮助人计算,人们只要找出数字之间的联系,或者数字本身的特征,或者向上面打印星星,需要知道打印几行,第一个for打印什么,第二个for打印什么,知道需求
分析:先根据规则普列数字:找出规律,(根据题意有三个变量,找出联系)
1.根据规则,普列数字:
2.找出三个变量之间的联系“
3.写程序:对照变量之间的联系
4.封装成函数
优化:把large middle small 写在函数中,避免污染。
5
使用递归:
6.
7.
8.斐波那切数列:后一项是前面两个的加和
解法:三三一组,每次循环,更新 sft, 注意sft的位置变换,以及他们之间值的转换。
递归写法:给出底层 n==2 与n==1的值,高层的都是底层的递加值。用递归写法更能体现斐波那契特性,但是在开发中很少使用递归,原因耗费性能。
9.计算阶乘
10.
1.常规思想:找出每一个位置上的数,用变量接收,在转换
问题是:用户可以输入任意位数的数值不确定有多少变量因此无法定义变量个数,因此常规思想解决不了。
解决思路:eg 1234 的转变过程是 4 43 432 4321
num=1234
b=num%10=4 num=parseInt(num/10);//123
此时不要用新变量接收3 ,直接将4变成43 b=b*10+num%10; //43 num=parseInt(num/10);12
将43变成432 b=b*10+num%10 num=parseInt(num/10);1
432变成4321 b=b*10+num %10
不算计算位数,因为parseInt(num/10)彻底转换完成后值为0,以此用num做判定条件即可。
感悟:1.算法思想极其重要:不去掌握算法思想,就永远只会用自己的常规思想(一般人都会去想的方向),或者彻底没有头绪。
掌握思想,举一反三,才是领先别人的地方。
2.演算过程必须极为苛刻,确定变量个数与名称,如果变量个数无法确定,考虑递变。
演算过程中,必须给出变量名,变量值的式子,并推演三四波变化,确定规律。过程必须极为清晰。