算法小技巧【取模的技巧】

个人笔记,有点毛,能看懂就看,呵呵。 


写一个方法 , 实现循环效果 不用if语句:int i = 0;

// 1- 6 的循环。
int fun( int max )
{
	static int i = 0;
	i = i%max ;
	i++;
	return i;
}

int main()
{
    fun(6);
}

// 传统写法:1- 6 的循环。
int fun( int max )
{
	static int i = 0;
        if(i>max)i =0;
	i++;
	return i;
}
取模应用
	//一段时间内变化指定次数。变化周期相同。
	int n_time = 3;
	for (float time =0 ;  time <1 ; time +=0.02)
	{
		//分段
		float slice = 1.0f / n_time;
		//0- slice 3 次。
		float m = fmodf(time, slice);
		if (m > slice/2)
		{
			printf("%f\n" ,m);
		}else{
			printf("-%f\n" ,m);
		}
		// |__ __ __|
	}
	//特点:
	//  time%slice得到的结果永远不可能大于slice ,只会在0-slice 这个周期里面循环
	//  slice/2 ,变化次数1 * 循环次数3
	// slice/3 ,每次次循环变化2次, 那样就会变化6 次。
	// slice /n ,得到变化次数:(1/slice) * (n-1) 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值