c# 递归没有返回答案

尝试求是否是3的幂

bool IsPowerOfThree(int n)
            {
                if (n > 3) { IsPowerOfThree(n / 3); }
                if (n == 3) { return true; }
                else { return false; }
            }

输入27 输出false 断点显示曾经得到过true但是不知道为啥最后并没有保留下来

bool IsPowerOfThree(int n)


            {


                if (n > 3) { return IsPowerOfThree(n / 3); }


                else if (n == 3) 
                { return true; }


                else { return false; }


            }


 

if else 要写全, 要写 return, 请试试看

bool IsPowerOfThree(ref int n)
            {

                if (n > 3) 
                { 
                    n = n / 3;
                    IsPowerOfThree( ref n); 
                }

                if (n == 3) { return true; }

                else { return false; }
            }


 

你这个递归有问题,你这个涉及到了栈的概念,但是呢n这个参数在最低层的栈里面,一直都是27,所以无论你怎么判断,结果都是false

bool IsPowerOfThree(int n)
            {
                bool IsOK = false;
                if (n > 3) 
                { 
                   IsOK = IsPowerOfThree( n / 3); 
                }

                return IsOK;
            }

2种方法都可以实现,建议使用这种方法