Skip to content

Solution to Exercise 3.18 #825

@clean99

Description

@clean99
function contains_cycle(x) {
    let counted_pairs = null;
    function is_counted_pair(counted_pairs, x) {
        return is_null(counted_pairs)
               ? false
               : head(counted_pairs) === x
               ? true
               : is_counted_pair(tail(counted_pairs), x);
    }

    function detect_cycle(x) {
          if(is_null(x)) {
              return false;
          }
      
          if(is_counted_pair(counted_pairs, x)) {
              return true;
          }
      
          counted_pairs = pair(x, counted_pairs);
          return detect_cycle(tail(x));
    }

    return detect_cycle(x);
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions