1
我必须创建一个函数(使用伪代码),它返回数组中指定元素的深度(包含可选数组),例如:查找数组(或列表等)中指定元素的深度
def array[] = {"a", {"b", {"c"}, "d"}, {{{}}}, "e"};
对于“E”它应该返回0,对于“C”,但应返回2等 如果有在阵列没有指定的元素,功能应该返回-1。
我已经尝试了几次,但我不知道优雅(和工作..)解决方案,只有这个:
func foo(array[], var element) {
int depth = 0;
boolean found = false;
boolean recursion = false;
boolean foundInRecursion = false;
for (int i = 0; i < array.length; i++) {
if (array[i] instanceof array[]) {
depth++;
recursion = true;
foo(array[i], element);
recursion = false;
} else if (array[i] == element) {
if (recursion) {
foundInRecursion = true;
} else {
found = true;
}
}
}
if (foundInRecursion) {
return depth;
} else if (found){
return 0;
} else {
return -1;
}
}
我真的很感激任何帮助! 感谢
该代码按原样正常工作。有可能传递当前的深度以使整个事情都是尾递归的,我没有这样做,以更清晰的方式显示这个想法。 – avysk
感谢您的澄清 - 今天我学到了一些东西。 :) –