PHP教程

【LeetCode】[PHP] 141 环形链表 执行出错“Fatal error: Nesting level too deep”问题解决

本文主要是介绍【LeetCode】[PHP] 141 环形链表 执行出错“Fatal error: Nesting level too deep”问题解决,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

141.环形链表

题目链接: https://leetcode-cn.com/problems/linked-list-cycle/description/

使用方法: 快慢指针法

执行出错信息:Line 19: PHP Fatal error: Nesting level too deep - recursive dependency? in solution.php

问题解决情况: 已解决

报错代码:

/**
 * Definition for a singly-linked list.
 * class ListNode {
 *     public $val = 0;
 *     public $next = null;
 *     function __construct($val) { $this->val = $val; }
 * }
 */

class Solution {
    /**
     * @param ListNode $head
     * @return Boolean
     */
    function hasCycle($head) {
        $fast = $head->next;
        $slow = $head;
        // if($fast){}
        while(($fast!=null) && ($slow!=null) && ($fast->next!=null)){
            if($fast == $slow){
                return true;
            }
            $fast = $fast->next->next;
            $slow = $slow->next;
        }
        return false;
    }
}

执行出错原因: 使用“快慢指针法”解答题目时,上方错误代码中,while循环中的if条件部分代码(即比较代码),$fast ==$slow为双等号,非严格比较,因此出现报错。

解决方法: 将while循环中的if语句()内的比较内容修改为$fast === $slow$fast !== $slow,即对$fast$slow进行严格比较。

详细分析: 该题目中,是使用class ListNode{}来声明的,即题目中声明的这个ListNode的基类型是一个类,因此在后续运用中,是对该类的实例化对象进行比较,因此需要使用严格比较。(此为目前的想法,如有错误欢迎指正)

参考文章:https://stackoverflow.com/questions/3834791/fatal-error-nesting-level-too-deep-recursive-dependency

这篇关于【LeetCode】[PHP] 141 环形链表 执行出错“Fatal error: Nesting level too deep”问题解决的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!