怎么用递归实现1-10的求和 golang

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么用递归实现1-10的求和 golang相关的知识,希望对你有一定的参考价值。

参考技术A 1、打出主函数defs(n):ifn=1。
2、在打出条件函数return1else:result=n+s(n-1)return.result。
3、最后结尾返回函数的值result=s(10)print(result)。

快排(golang实现) 递归方法

递归方法,逻辑简洁清晰。这个算法还是很重要的,需要重点记忆理解,面试经常考,与傅里叶变换等并称“20世纪十大算法”。

快速排序算法的平均时间复杂度是 O(nlogn),最坏情况时间复杂度是 O(n^2)

  

package main

import (
	"fmt"
)

func main() {
	var arr = []int{4, 7, 6, 8, 3, 2, 8, 1}
	fmt.Println(arr)
	quickSort(arr, 0, len(arr)-1)
	fmt.Println(arr)
}

func quickSort(arr []int, startIndex, endIndex int) int {
	// 递归结束条件:startIndex大等于endIndex的时候
	if startIndex >= endIndex {
		return -1
	}
	// 得到基准元素位置
	var pivotIndex = partition(arr, startIndex, endIndex)
	// 根据基准元素,分成两部分递归排序(分治法)
	quickSort(arr, startIndex, pivotIndex-1)
	quickSort(arr, pivotIndex+1, endIndex)
	return 0
}

func partition(arr []int, startIndex, endIndex int) int {
	// 取第一个位置的元素作为基准元素
	var pivot = arr[startIndex]
	var left = startIndex
	var right = endIndex
	for left != right {
		//控制right指针比较并左移
		for left < right && arr[right] > pivot {
			right--
		}
		//控制right指针比较并右移

		for left < right && arr[left] <= pivot {
			left++
		}
		//交换left和right指向的元素
		if left < right {
			p := arr[left]
			arr[left] = arr[right]
			arr[right] = p
		}
	}
	//pivot和指针重合点交换
	p := arr[left]
	arr[left] = arr[startIndex]
	arr[startIndex] = p
	return left
}

  

以上是关于怎么用递归实现1-10的求和 golang的主要内容,如果未能解决你的问题,请参考以下文章

编写对具有n个元素的一维数组求和函数ArraySum()

飘逸的python - 不使用keyword,求和1+2+…+n

递归求和

Python实现:函数的递归(示例)

c语言怎么用递归调用函数的方法求n的阶乘?

2.简单求和[递归法]