zoukankan      html  css  js  c++  java
  • Golang习题


    目录

    一、简单算法

    一、简单算法

    1. 阶乘

    func factorial(n uint64) (result uint64){
    	if(n > 0){
    		result = n * factorial(n-1)
    		return result
    	}
    	return 1
    }
    

    2. 斐波那契数

    func fibonacci(n int) int{
        if(n < 2){
    	    return n
        }
        return fibonacci(n-1) + fibonacci(n-2)
    
    }
    

    3. 素数

    3.1 常规解法

    func main(){
    	var i,j  int
    	for i=2;i<100;i++{
    		// golang注意事项  此处是i/j 已舍去小数点
    		for j=2;j<=(i/j);j++{
    			if i%j == 0{
    				break
    			}
    		}
    		if j>(i/j){
    			fmt.Println("素数为:", i)
    		}
    	}
    }
    

    3.2 筛子解法

    func Generate(ch chan<- int){
    	for i:=2;;i++{
    		ch<- i
    	}
    }
    func Filter(in <-chan int, out chan<- int, prime int){
                //递归去除整数倍
    	for{
    		i := <-in
    		if i % prime != 0{
    			out<- i
    		}
    	}
    }
    func main(){
    	ch := make(chan int)
    	go Generate(ch)
    
    	for i:=0;i<100;i++{
    		prime := <-ch
    		fmt.Println("素数为:", prime)
    		ch1 := make(chan  int)
    		go Filter(ch, ch1, prime)
                        // 筛完的管道基础上去筛另一个数的整数倍,比如第一次筛完了2的整数倍赋值给新的管道,新的管道再去筛3的整数倍...
    		ch = ch1
    	}
    }
  • 相关阅读:
    Magento交易邮件常见问题
    Magento谷歌分析设置
    magento SEO优化设置
    飞凤平台示范项目
    工厂生产线测量仪器的数据下发
    某外资汽车部件工厂车床联网系统
    行云仓库管理系统的概述
    arm v5,v6,v7?
    前端开发收藏夹
    mysql 事件
  • 原文地址:https://www.cnblogs.com/zhangliang91/p/11461961.html
Copyright © 2011-2022 走看看