递归遍历数组
let arr = [1,2,3,4,5,6,7,8];
/**
*
* @param {*} data 数据源
* @param {*} i 从几开始
* @returns
*/
function lookBack(data, i) {
if(data == null || !Array.isArray(data)) return console.log('请传入数组');
if(typeof i != 'number') return
if(data.length <= i) return console.log('结束了');
console.log('每个的数字',data[i]);
lookBack(data, ++i)
}
lookBack(arr, 0)
链表的递归
function Node(value) {
this.value = value
this.next = null
}
const a = new Node(1)
const b = new Node(2)
const c = new Node(3)
const d = new Node(4)
a.next = b
b.next = c
c.next = d
d.next = null
function lookRes(node) {
if(node == null) return
console.log('node', node.value);
lookRes(node.next)
}
lookRes(a)
链表的逆置
function Node(value) {
this.value = value
this.next = null
}
const node1 = new Node(1)
const node2 = new Node(2)
const node3 = new Node(3)
const node4 = new Node(4)
const node5 = new Node(5)
node1.next = null
// node2.next = null
// node3.next = node4
// node4.next = node5
function reverseInput(node) {
if(!node) return null
if(!node.next) return node
const newHead = reverseInput(node.next);
node.next.next = node;
node.next = null;
return newHead;
}
const rootNode = reverseInput(node1)
function blackTree(root) {
if (root === null) return
console.log(root.value);
return blackTree(root.next)
}
blackTree(rootNode)