zoukankan      html  css  js  c++  java
  • 递归函数

    递归函数(和Python的递归函数没什么区别,就是自己调用自己)

    package main
    
    import "fmt"
    //递归 阶乘
    func Factorial(n uint64)(result uint64) {
    	if (n > 0) {
    		result = n * Factorial(n-1)
    		return result
    	}
    	return 1
    }
    
    //斐波那契数列
    func fibonacci(n int) int {
    	if n < 2 {
    		return n
    	}
    	return fibonacci(n-2) + fibonacci(n-1)
    }
    
    func main() {
    	var i int = 15
    	fmt.Printf("%d 的阶乘是 %d
    ", i, Factorial(uint64(i)))
    
    	var n int
    	for n = 0; n < 10; n++ {
    		fmt.Printf("%d	", fibonacci(n))
    	}
    }
    

      变量类型转换

    package main
    
    import "fmt"
    
    func main() {
    	var sum int = 17
    	var count int = 5
    	var mean float32
    	//类型转换,和Python一样直接使用其他类型加(原类型)就可以了
    	mean = float32(sum)/float32(count)
    	fmt.Printf("mean 的值为: %f
    ",mean)
    }
    

      错误处理

    //错误处理,Go 语言通过内置的错误接口提供了非常简单的错误处理机制
    //error类型是一个接口类型,这是它的定义
    /*
    type error interface {
    Error() string
    }
    */
    package main
    
    import (
    	"errors"
    	"fmt"
    )
    
    func Sqrt(f float64) (float64, error) {
    	if f < 0 {
    		return 0, errors.New("math: square root of negative number")
    	}
    	// 实现
    	return f*f,nil
    }
    
    func main(){
    	result,err:= Sqrt(-1)
    
    	if err != nil {
    		fmt.Println(err)
    	}else{
    		fmt.Println(result)
    	}
    }
    

      

    package main
    
    import (
    	"fmt"
    )
    
    // 定义一个 DivideError 结构
    type DivideError struct {
    	dividee int
    	divider int
    }
    
    // 实现 `error` 接口
    func (de *DivideError) Error() string {
    	strFormat := `
        Cannot proceed, the divider is zero.
        dividee: %d
        divider: 0
    `
    	return fmt.Sprintf(strFormat, de.dividee)
    }
    
    // 定义 `int` 类型除法运算的函数
    func Divide(varDividee int, varDivider int) (result int, errorMsg string) {
    	if varDivider == 0 {
    		dData := DivideError{
    			dividee: varDividee,
    			divider: varDivider,
    		}
    		errorMsg = dData.Error()
    		return
    	} else {
    		return varDividee / varDivider, ""
    	}
    
    }
    
    func main() {
    
    	// 正常情况
    	if result, errorMsg := Divide(100, 10); errorMsg == "" {
    		fmt.Println("100/10 = ", result)
    	}
    	// 当被除数为零的时候会返回错误信息
    	if _, errorMsg := Divide(100, 0); errorMsg != "" {
    		fmt.Println("errorMsg is: ", errorMsg)
    	}
    
    }
    

      

  • 相关阅读:
    第二次作业循环语句
    c语言01次作业分支,顺序结构
    PAT 1027. Colors in Mars
    PAT 1026 Table Tennis
    PAT 1035 Password
    PAT 1038. Recover the Smallest Number
    PAT 1028 List Sorting (25)
    PAT 1041 Be Unique (20)
    PAT 1025 PAT Ranking
    1037. Magic Coupon
  • 原文地址:https://www.cnblogs.com/perfey/p/9905986.html
Copyright © 2011-2022 走看看