input: Write a function to find the maximum value within a nested dictionary. The function should recursively traverse through the dictionary and its sub-dictionaries to return the highest numeric value found.
  
  def findMaxValue(dict): 
      max_val = None
      for key, value in dict.items():
          if isinstance(value, dict):
              max_val = max(findMaxValue(value), max_val)
          else:
              max_val = max(value, max_val)
      return max_val
  
  assert findMaxValue({
      "key1": {
          "value1": 10, 
          "value2": 20
      }, 
      "key2": {
          "value3": 40
      }, 
  }) == 40
  
  assert findMaxValue({
      "a": 5, 
      "b": {
          "c": 15, 
          "d": {
              "e": 25
          }
      }, 
      "f": {
          "g": 10
      }
  }) == 25
  
  assert findMaxValue({}) == None
  assert findMaxValue({"a": 10}) == 10
  assert findMaxValue({"a": 10, "b": 5}) == 10
output: def findMaxValue(dict): 
      max_val = None
      for key, value in dict.items():
          if isinstance(value, dict):
              max_val = max(findMaxValue(value), max_val)
          else:
              max_val = max(value, max_val)
      return max_val