包含while循环

问题描述

我有一个递归函数 int digit_sum(int number);,它返回数字中所有数字的总和。例如,digit_sum(159) = 1 + 5 + 9 = 15。

功能如下:

int digit_sum(int n)
{
  if (n < 0)
    n = -n;

  if (n < 10)
    return n % 10;

  while (n % 10 == 0 && n > 0)
    n = n / 10;

  return n % 10 + digit_sum(n - (n % 10));
}

我不确定如何为此函数编写递归关系。我知道 T(0) 是前两个 if 语句常量的总和。但是,对于 T(n),我不确定如何表达 while 循环项和 T(n-k)。

模运算符让我失望。这是一个猜测,我很确定这是错误的:

T(n) = c_1 + c_2 + c_3*n (while 循环) + (n mod 10 + T(n - (n mod 10))) for n >= 10

我知道整个 T(n-k) 项是错误的。

解决方法

这是一个可能的解决方案:

const { state }  = useLocation();

state.key