嵌套循环的递归实现

时间:2016-12-09 04:17:38

标签: recursion go nested-loops

我正在尝试从字符串生成增量组合,例如:

// for "23405"
2
3
4
5
23
34
40
05
234
340
405
2340
3405
23405

我正在使用嵌套循环:

str := "23405"
for i := 0; i <= len(str); i++ {
    for j := 0; j <= i; j++ {
        fmt.Println(str[j:i])
    }
}

是否可以使用递归函数执行相同的操作?我正在写它,但任何语言的例子都会有所帮助。这是游乐场link

1 个答案:

答案 0 :(得分:2)

这是我的递归尝试:https://repl.it/ElYY/9

package main

import "fmt"

func reverse(str string, length int, i int) {
  if len(str) > length+i && length > 0 {
    fmt.Println(str[i:length+i])
    reverse(str, length, i+1)
  } else if len(str) == length+i && length > 0 {
    fmt.Println(str[i:length+i])
    reverse(str, length-1, 0)
  }
}

func recIterate(str string, length int, i int) {
  if length > i {
    fmt.Println(str[i:len(str)-length+i+1])
    recIterate(str, length, i+1)
  } else if length == i && length > 0{
    recIterate(str, length-1, 0)
  }
}

func main() {
  str := "234051234"
  recIterate(str, len(str), 0)
  // reverse(str, len(str), 0)
}

nexus66致敬〜