码迷,mamicode.com
首页 > 其他好文 > 详细

递归和循环 实现 连续自然数的和

时间:2019-11-19 17:24:42      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:自然数   nbsp   调用   就是   func   import   time   color   ++   

 

递归

/*

函数自己调用自己就是递归.
*/

 

 

 

 

连续自然数的和

/*
求1+2+3+4....+n的和

 */

 

循环实现

 1  //循环实现
 2 package main
 3 
 4 import "fmt"
 5 
 6 func main() {
 7 
 8     fmt.Println(GetSum(10))
 9 
10 }
11 func GetSum(n int) (sum int) {
12     for i := 1; i < n+1; i++ {
13         sum += i
14     }
15     return
16 }

 

递归实现

 1 /*
 2 递归实现
 3 递归一定要有终止条件,一路递出去,一路归回来。
 4 
 5 实现逻辑
 6 f自己调用自己
 7 f(10)调用f(9)  f(9)调用f(8)...f(2)调用f(1)
 8 f(10)= 10+f(9) = 9+f(8) = 8+f(7) ....2+f(1)
 9 
10 */
11 
12 package main
13 
14 import "fmt"
15 
16 func main() {
17     fmt.Println(f(10))
18 }
19 
20 func f(n int) (sum int) {
21 
22     //终止条件,由递转归
23     if n == 1 {
24         return 1
25     }
26 
27     //自己调用自己
28     return n + f(n-1)
29 
30 }

 

递归 比较  循环

 

 1 /*
 2 递归比较循环
 3 拿f(10)来比较
 4 循环方式是 循环了10次。
 5 递归方式是 来回搞了20次。
 6 
 7 */
 8 
 9 
10 //递归方法
11 
12 package main
13 
14 import (
15     "fmt"
16     "time"
17 )
18 
19 func main() {
20     TimeIt(f, 100000)
21 }
22 
23 func f(n int) (sum int) {
24 
25     //终止条件,由递转归
26     if n == 1 {
27         return 1
28     }
29 
30     //自己调用自己
31     return n + f(n-1)
32 
33 }
34 
35 func TimeIt(f func(int) int, arg int) {
36     StartTime := time.Now()
37     f(arg)
38     EndTime := time.Now()
39 
40     fmt.Println("执行耗时: ", EndTime.Sub(StartTime))
41 
42 }
43 
44 //执行耗时:  22.94ms

 

 

 1 //循环方式
 2 package main
 3 
 4 import (
 5     "fmt"
 6     "time"
 7 )
 8 
 9 func main() {
10     TimeIt(GetSum, 100000)
11 }
12 
13 func GetSum(n int) (sum int) {
14     for i := 1; i < n+1; i++ {
15         sum += i
16     }
17     return
18 }
19 
20 func TimeIt(f func(int) int, arg int) {
21     StartTime := time.Now()
22     f(arg)
23     EndTime := time.Now()
24 
25     fmt.Println("执行耗时: ", EndTime.Sub(StartTime))
26 
27 }
28 
29 // 执行耗时:  0s

 

递归和循环 实现 连续自然数的和

标签:自然数   nbsp   调用   就是   func   import   time   color   ++   

原文地址:https://www.cnblogs.com/chaoyangxu/p/11890441.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!