вторник, 15 июня 2021 г.

Rewriting the recursive algorithm iteratively in python

Либо 

import sys 

sys.setrecursionlimit(1500) 


Либо

Any recursive function can be made to iterate (into a loop) but you need to use a stack yourself to keep the state.

Normally, tail recursion is easy to convert into a loop:

A(x) {
  if x<0 return 0;
  return something(x) + A(x-1)
}

Can be translated into:

A(x) {
  temp = 0;
  for i in 0..x {
    temp = temp + something(i);
  }
  return temp;
}

Other kinds of recursion that can be translated into tail recursion are also easy to change. The other require more work.

The following:

treeSum(tree) {
  if tree=nil then 0
  else tree.value + treeSum(tree.left) + treeSum(tree.right);
}

Is not that easy to translate. You can remove one piece of the recursion, but the other one is not possible without a structure to hold the state.

treeSum(tree) {
  walk = tree;
  temp = 0;
  while walk != nil {
    temp = temp + walk.value + treeSum(walk.right);
    walk = walk.left;
  }
}

понедельник, 14 июня 2021 г.

Human Phenotype Ontology

  https://github.com/davetang/human_phenotype_ontology/blob/master/README.md


https://www.taylorfrancis.com/books/mono/10.1201/b10967/introduction-bio-ontologies-peter-robinson-sebastian-bauer