使用递归来获取整数中的位数

Dav*_*vid 2 c# recursion

我正在编写一个函数,它应该使用递归来获取整数中的位数,例如236有3位数.到目前为止,我有这个,但它不起作用.那么,那里的递归有一个非常好的解释吗?

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
          Console.WriteLine(getDigits(5428, 0));
          Console.ReadLine();
        }

        public static int getDigits(int digits, int i)
        {
            if (digits != 0)
            {
                i++;
                getDigits(digits/10, i);                
            }

            return i;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Tho*_*mar 5

好吧,你需要稍微调整你的递归函数:

public static int GetDigits(int number, int digits)
{
    if (number == 0)
        return digits;

    return GetDigits(number / 10, ++digits);
}
Run Code Online (Sandbox Code Playgroud)

你的错误是,你没有从递归调用中返回结果.