2016-12-09 130 views
2

我想从一个字符串产生增量的组合,像:递归执行嵌套循环

// 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

+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帮助〜关于使用Python的内发电机

+1

为什么最后有很多空的空间? –

+0

如果需要,请查看正确的输出[此处](https://repl.it/ElYx/0)并尝试改进您的代码。 –

+1

@ nexus66找到它了。当'length = 0'时仍然在经历它 – Ethan