MST

星途 面试题库

面试题:Python字典在函数递归参数传递及作用域中的复杂应用

编写一个递归函数,该函数接受一个字典作为参数,字典中的值可能是整数、列表或另一个字典。如果值是整数,直接返回该整数;如果是列表,对列表中的每个元素递归调用这个函数,并返回所有结果的总和;如果是字典,对字典的每个值递归调用这个函数,并返回所有结果的乘积。分析在递归过程中字典参数传递对函数作用域和执行逻辑的影响。
12.8万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
def recursive_function(dictionary):
    if isinstance(dictionary, int):
        return dictionary
    elif isinstance(dictionary, list):
        total = 0
        for item in dictionary:
            total += recursive_function(item)
        return total
    elif isinstance(dictionary, dict):
        product = 1
        for value in dictionary.values():
            product *= recursive_function(value)
        return product
    else:
        return 0

字典参数传递对函数作用域和执行逻辑的影响分析

  1. 函数作用域:在Python中,函数参数传递是对象引用传递。当字典作为参数传递给递归函数时,在函数内部对字典的操作(如访问键值对)都在当前函数作用域内。由于递归调用会创建新的函数栈帧,每个栈帧都有自己独立的局部作用域。例如,在处理字典值为列表或另一个字典时,递归调用会在新的作用域中处理子结构,互不干扰。
  2. 执行逻辑:递归函数通过判断字典值的类型来决定执行不同的逻辑。当字典值是整数时,直接返回该整数。当是列表时,对列表每个元素递归调用函数并累加结果。当是字典时,对字典每个值递归调用函数并累乘结果。在递归过程中,字典的结构决定了递归的深度和广度。例如,一个嵌套多层的字典会导致多次递归调用,直到遇到整数类型的值。这种参数传递方式使得函数能够有效地处理复杂嵌套的数据结构,通过递归深入到每一层子结构进行相应计算。