1题目要求如下
用 JavaScript 写一个函数,输入 int 型,返回整数逆序后的字符串。如:输入整型 1234,返回字符串“4321”。要求必须使用递归函数调用,不能用全局变量,输入函数必须只有一个参数传入,必须返回字符串。
分析:由于输入的是整形,我们需要把它转化为字符串 在js中 出现了加减乘除都会发生隐式的类型转换 由于无论是什么数 都有 这个数与10的余数都是他的最后一位数,即个位数,所有我们可以使用递归的思想,不断对这个数取10的余数,然后相加,最后如果这个数小于10直接返回 ,也就是递归退出的条件
解法如下
function reverse2(nums){
nums = parseInt(nums)
if (nums>10){
return String(nums%10)+reverse2(nums/10)
}else{
return String(nums)
}
}
console.log(reverse2(1234)); // 4321
console.log(typeof reverse2(1234)); // String
2题目要求如下
已知如下数组:
arr = [[1,2,2],[3, 4, 5, 5],[6, 7, 8, 9,[11,12,[12,13,[14]]]],10]
编写一个程序将数组扁平化去并除其中重复部分数据,最终得到一个升序且不重复的数组
这个问题可以分三步解决,
- 将题目所给数组扁平
- 将数组去重
- 对数组进行升序排列
经过以上三步 就可以得到一个全新的数组 符合题目的要求
具体实现步骤如下 本来是可以利用python的集合和内置函数的,这次我采用函数式编程,自己造轮子。
进行扁平化
def flat_array(arr):
for x in arr:
if type(x) == list:
flat_array(x)
else:
new_arr.append(x)
return remove_duplicate(new_arr)
进行去重
def remove_duplicate(flat_arr):
li = []
for i in flat_arr:
if i not in li:
li.append(i)
return sort(li)
进行排序 这里使用的是插入排序,哪一种排序都可以看你自己喜欢哪一种就用哪一种
def sort(alist):
n = len(alist)
for i in range(n-1):
j = i+1
while j != 0:
if alist[j] > alist[j-1]:
alist[j],alist[j-1] = alist[j-1],alist[j]
j-=1
else:
break
return alist
结果如下图
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
这个博文会长期更新的,先就这样啦。