furikiri
2021-03-13 21:13
采纳率: 40%
浏览 38

c# 递归没有返回答案

尝试求是否是3的幂

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

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

  • 好问题 提建议
  • 收藏

3条回答 默认 最新

  • SoftwareTeacher 2021-03-13 22:35
    已采纳
    bool IsPowerOfThree(int n)
    
    
                {
    
    
                    if (n > 3) { return IsPowerOfThree(n / 3); }
    
    
                    else if (n == 3) 
                    { return true; }
    
    
                    else { return false; }
    
    
                }
    
    
     
    
    

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

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 粉墨小克 2021-03-14 00:13
    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

    评论
    解决 无用
    打赏 举报
  • 粉墨小克 2021-03-14 00:20
    bool IsPowerOfThree(int n)
                {
                    bool IsOK = false;
                    if (n > 3) 
                    { 
                       IsOK = IsPowerOfThree( n / 3); 
                    }
    
                    return IsOK;
                }

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

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题