input: Write a function to find the maximum value within a nested dictionary and return it. If the dictionary is empty, return None.
  assert findMaxValue({})==None
  assert findMaxValue({"key1": {"value1": 10, "value2": 20}, "key2": {"value3": 40}})==40
  assert findMaxValue({"key1": {"value1": 10}, "key2": {"value3": 40, "subkey": {"key4": 60}}})==60
  assert findMaxValue({"key1": {"value1": 10, "value2": 20}, "key2": {"value3": 30, "subkey": {"key4": 25}}})==30
  assert findMaxValue({"key1": {"value1": 5}, "key2": {"value3": 15}, "key3": {"value4": 20, "subkey": {"key5": 25}}})==25
output: def findMaxValue(d):
      if not d:
          return None
      max_value = float('-inf')
      stack = [d]
      while stack:
          current = stack.pop()
          for key, value in current.items():
              if isinstance(value, dict):
                  stack.append(value)
              else:
                  if value > max_value:
                      max_value = value
      return max_value if max_value != float('-inf') else None