• 全部
...

学习笔记【雪国列车】-第二日 函数

星星-adcbiss1234 2021-11-30 23:23:22
加精

1.第371,两整数之和

第一个解:偷懒 :p

  1. int getSum(int a, int b){
  2. return a+b;
  3. }

第二个解 亦或补差(错的)

  1. int getSum(int a, int b){
  2. return (a^b)^((a&b)<<1);
  3. }

 忘记当时是怎么想的了。看了一i下评论区大佬的说法很好理解而且和我的想法很接近;但我认为只会copy而不保证可以真正理解是学不好算法的,所以没去抄,只是看了很久

2,3同1

 

 

 

4:递归乘法

  1. int multiply(int A, int B){
  2. int c=0;
  3. while(B>0){
  4. c=A+c;
  5. B--;
  6. }
  7. return c;
  8. }

很简单的一题,用的是乘法的本来定义:让a加上 b 个自己,反之亦然

 

5.除法运算

一:萌新解法  :D

  1. int divide(int dividend, int divisor){
  2. if(divisor!=0){
  3. return (dividend/divisor);
  4. }
  5. else return 0;
  6. }

二:超慢超慢解法

  1. int divide(int dividend, int divisor){
  2. int a=dividend,b=divisor,i;
  3. if(a!=0){
  4. if((a*b)<0){
  5. if(a<0)
  6. a=!a+1;//负数算,倒置补1
  7. else{
  8. b=!b+1;
  9. }
  10. }
  11. for(i=0,a>0,i++){
  12. a-=b;
  13. }
  14. return i+1;
  15. }
  16. else return 0;
  17. }

易知该算法 。。收敛太慢

是想到用退位数(因为提示 2^31)这样除,但是范围太大了想不到怎么办了。。

 

6:次幂函数

  1. double myPow(double x, int n){
  2. int a=1;
  3. while(n>0){
  4. a*=x;
  5. n--;
  6. }
  7. return a;
  8. }

or :D

  1. double myPow(double x, int n){
  2. return pow(x,n);
  3. }

7平方根运算

  1. int mySqrt(int x){
  2. if(x<=0){
  3. return 0;
  4. }
  5. else
  6. return sqrt(x);
  7. }

8-比大小

  1. int maximum(int a, int b){
  2. return((a-b>=0)?a:b);
  3. }

 

...全文
给本帖投票
220 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-数据结构与算法 发布问题, 以便更快地解决您的疑问

64,172

社区成员

发帖
与我相关
我的任务
社区描述
学习「 算法 」的捷径就是 「 题海战略 」,社区由「 夜深人静写算法 」作者创建,三年ACM经验,校集训队队长,亚洲区域赛金牌,世界总决赛选手。社区提供系统的训练,答疑解惑,面试经验,大厂内推等机会
社区管理员
  • 英雄哪里出来
  • 芝麻粒儿
  • Amy卜bo皮
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

QQ群:480072171

英雄算法交流 8 群

 

试试用AI创作助手写篇文章吧

手机看
关注公众号

关注公众号

客服 返回
顶部