recursion - Implementing next_permutation in sml? -


how implement in sml? possible change inner for-loop recursive inner function?

void recursivepermute(char str[], int k) {   int j;   // base-case: fixed, print str.  if (k == strlen(str))      printf("%s\n", str);   else {       // try each letter in spot j.      (j=k; j<strlen(str); j++) {           // place next letter in spot k.          exchangecharacters(str, k, j);           // print spot k fixed.          recursivepermute(str, k+1);           // put old char back.          exchangecharacters(str, j, k);      }  } 

}

you write like

val rec recursivepermute = fn (str, k) => ... 

or

fun recursivepermute (str, k) = ... 

you can check k , length of str like

if (string.size str = k) ... else ... 

as inner-loop function, work in poor way, better else concerns representation of string. if want swap characters, work o(n) @ worst n - length of string (due need remove characters between them , put them back). generally, need use o(n^2) time quite ineffective.


Comments

Popular posts from this blog

ruby on rails - RuntimeError: Circular dependency detected while autoloading constant - ActiveAdmin.register Role -

c++ - OpenMP unpredictable overhead -

javascript - Wordpress slider, not displayed 100% width -