Tag: 递归

如何迭代通过JsonObject的属性递归?

我将字符串解析为JSON对象,我需要能够递归地迭代对象的属性。 所以我试图创建一个函数迭代通过对象的属性,如果一个属性不是一个原语,然后再次调用该函数(递归)与属性本身。 在JavaScript中,我会解决这个问题: function forEachAttribute(object) { for (let key in object) { let attribute = object[key]; if (typeof attribute === “object”) { forEachAttribute(attribute); } else { console.log(key + “: ” + attribute); } } } let myObject = { innerObject: { x: 123 }, y: 456 }; forEachAttribute(myObject); 但是我正在摆脱Javascript,并试图学习如何使用Kotlin。 所以我find了一个遍历JSON对象属性的方法 。 但我不太明白如何确定属性是否是一个原始的。 import kotlin.js.Json fun […]

Kotlin挂起函数递归调用

突然发现,递归调用挂起函数需要更多的时间,然后调用相同的函数,但没有suspend修饰符,所以请考虑下面的代码片段(基本的斐波那契数列计算): suspend fun asyncFibonacci(n: Int): Long = when { n asyncFibonacci(n + 2) – asyncFibonacci(n + 1) n == -1 -> 1 n == 0 -> 0 n == 1 -> 1 n >= 2 -> asyncFibonacci(n – 1) + asyncFibonacci(n – 2) else -> throw IllegalArgumentException() } 如果我调用这个函数并用下面的代码来衡量它的执行时间: fun main(args: Array) { val totalElapsedTime […]