递归实现
1、确定函数返回值及参数

ListNode* reverse(ListNode* pre, ListNode* cur)

2、确定递归终止条件

if(cur == nullptr)
    return pre;

3、确定递归单层逻辑

ListNode* temp = cur->next;
cur->next = pre;

最终完整代码

class Solution {
public:
    ListNode* ReverseList(ListNode* pHead) {
        return reverse(nullptr, pHead);
    }

    //递归实现
    ListNode* reverse(ListNode* pre, ListNode* cur){
        if(cur == nullptr)
            return pre;
        ListNode* temp = cur->next;
        cur->next = pre;
        return reverse(cur, temp);
    }
};