1211C++草稿

文章目录

第五章 函数

m=(a>b)?a:b;
return (m>c)?m:c;

名词:

余数remainder

a=39,b=12;a%b=3;a=12,b=3;a%b=0;gcd=b->3

return和int一样,不是函数,后面没有参数,不用接()

int reminder=a%b;
	while(reminder!=0){
		reminder=a%b;//放在后面??放前面的话12,39->0
		a=b;
		b=reminder;//Attentino!!!
    }

b=最后一次不为0的reminder,所以reminder的赋值(第一次在while外面)和判断(在while里面)都放在b的赋值语句后面
若reminder放在前面,则reminder=0了,还得再赋值给b

5.17gcd in recursion:
30%18=12;18%12=6;12%6=0;6✔

//调试一下这个函数
int gcd(int a,int b){
	//a=(a>b)?a:b  炫技那个呢?
	if(a>b){
		int tmp=a;
		a=b,b=tmp;
	}
	int reminder=a%b;
	while(reminder!=0){
		a=b;
		b=reminder;//Attentino!!!
		reminder=a%b;//放在后面??放前面的话12,39->0
	}
	return b;
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0rKjfLYC-1577775554502)(C:\Users\86132\AppData\Roaming\Typora\typora-user-images\1576058079827.png)]

数组可以省略长度,等号num[]{xxx,xxx,xxx};

求数组个数:数组长度/单个元素的长度sizeof(num)/sizeof(int)

C++小技巧:注释的时候/**然后回车[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LSgLxycl-1577775554505)(C:\Users\86132\AppData\Roaming\Typora\typora-user-images\1576058242527.png)]

void transfer(int m)
{
	int k,n;
	k = m%2;
	m = m/2;
	if(m == 0){
		cout<<k;
		return;
	}
	else{
		transfer(m);
		cout<<k;//此处k并不会马上输出,等最后一个transfer执行完才输出程序将相当于:cout<<k0;cout<<k1;cout<<k2;...cout<<k,先输出的在左边,因此排序就是k0 k1 ... k
        //如果cout放在tansfer前面就反过来
        //因为此处先得到的m%2是权重最低的,因此应该放在最右边,所以最后输出,cout<<k放在transfer前面
	}
}
/**每求余1次,从右往左输出
但是输出是从左往右的,越往后的k,越早输出。逆序,所以应该是递归调用后cout,

分割器代码

void slicer(int n){
	if(n/10==0){
		cout<<n<<endl;
	}
	else{
		cout<<n%10<<endl;//key!(n%10!=n/10)
		slicer(n/10);//key!!(n/10!=n%10)
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gfisecLf-1577775554506)(C:\Users\86132\AppData\Roaming\Typora\typora-user-images\1576113867704.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D6jYmcZl-1577775554507)(C:\Users\86132\AppData\Roaming\Typora\typora-user-images\1576113905237.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KuogeTFm-1577775554508)(C:\Users\86132\AppData\Roaming\Typora\typora-user-images\1576114385387.png)]

double HermRecur(double x,int n){
	if(n=0){
		cout<<"H0("<<x<<")=1"<<endl;
	}
	else if(n=1){
		cout<<"H1("<<x<<")="<<2*x<<endl;
		return 2*x;
	}
	else{
		cout<<"H"<<n<<"("<<x<<")="<<(2*x*HermRecur(x,n-1)-2*(n-1)*HermRecur(x,n-2))<<endl;
		return (2*x*HermRecur(x,n-1)-2*(n-1)*HermRecur(x,n-2));
		}
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-towkybNA-1577775554511)(C:\Users\86132\AppData\Roaming\Typora\typora-user-images\1576114608236.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5k4z1RC2-1577775554515)(C:\Users\86132\AppData\Roaming\Typora\typora-user-images\1576114946126.png)]

if(n=1)即if(1)永真,所以每次n都是1

后来又犯了一次这个错误…在HermValue里面…

{}一起输入然后再将光标移到里面敲回车

//Hermite
double HermValue(double x,int n){
	if(n==0){
		return 1;
	}
	else if(n==1){
		return 2*x;
	}
	else{
		return (2*x*HermValue(x,n-1)-2*(n-1)*HermValue(x,n-2));
		}
}/删否?
void HermRecur(double x,int n){
	if(n==0){
		cout<<"H0("<<x<<")=1"<<endl;
	}
	else if(n==1){
		cout<<"H1("<<x<<")="<<2*x<<endl;
		HermRecur(x,0);
	}
	else{
		cout<<"H"<<n<<"("<<x<<")="<<HermValue(x,n)<<endl;
		HermRecur(x,n-1);
		}
}

void Herm(double x,int n){
	double value0=1,value1=2*x,value;
	cout<<"H0("<<x<<")=1"<<endl;
	if(n>1){
		cout<<"H1("<<x<<")="<<2*x<<endl;
		for(int i=2;i<=n;i++){
			value=2*x*value1-2*(i-1)*value0;
			value0=value1;
			value1=value;
			cout<<"H"<<i<<"("<<x<<")="<<value<<endl;
		}
	}
}

gcd遇到12,12卡住:12,60也卡住(都是因为reminder=0)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dai80yZ4-1577775554520)(C:\Users\86132\AppData\Roaming\Typora\typora-user-images\1576116834175.png)]

int gcd(int m,int n){//in recursion
	int tmp=(m>n)?m:n;
	n=m+n-tmp;
	m=tmp;
	int reminder=m%n;
	return (n%reminder==0)?reminder:gcd(n,reminder);//若reminder=0,出现错误12%0
}
//待修改
	if(n>1){
		cout<<"H"<<n<<"("<<x<<")="<<HermRecur(x,n)<<endl;//要用到HermRecur的值,所以不能是void
		return (2*x*HermRecur(x,n-1)-2*(n-1)*HermRecur(x,n-2));
	}//也可以利用有返回值的函数进行操作,别在意返回值就行了--for函数都有返回值哈~
	else if(n=1){
		cout<<"H"<<n<<"("<<x<<")"<<2*x<<endl;
		cout<<"H0("<<x<<")="<<1<<endl;
		return 2*x;
	}
	else{
		return 1;
	}
		
}

2&&3是true

2&&0是false

for(int i=2;i<=a/2;i++){//不能从i=1开始,否则都是非素数
		cout<<"----i=\t"<<i<<endl;///
		if(a%i==0){//非素数,返回0
			return 0;
		}
	}
如果输入i=3,for不会循环->2>3/2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值