美文网首页
基础编程 7

基础编程 7

作者: RealAnalysis | 来源:发表于2020-05-08 22:29 被阅读0次

Question 16

欢迎勉强算全新的知识 Array ,目前的初印象是,计算机里的array是一列数列的感觉? 不像数学里是大型数组?也许我误解了...anyway 先把相关info看起来学起来

看题目的初印象是,index要好好把握一下怎么写进代码,不然题目做不了哈哈哈

嗯...教程提示第二行就打破我的初印象 是可以有数组的哈哈哈
但是有反转 不是我熟悉的数组 而是array里的元素变成数列放进去 还是数列的既视感 index的体现要变成二维的 有趣

啧啧啧 仔细想想 这样也算是我想象的数组了吧其实

嗯 学到了array的简写 arr 啊,但是头疼要怎么表达最后一个的index跟第一个index的联动关系啊啊啊 要怎么写loop啊...

尝试加array[j] = array.last去定义最后一个index 未果哈哈哈
改成j = array.last.index这样自己想出来的文法 也未果哈哈哈

改变思路 从最后一项开始“加一”两两对比,总算有数据被挑出来了 算进步

但是结果是错的 需要再改

i = 0 这个从第一项开始的思路改成 i = -1从最后一项开始比数据

然后就成功找到88啦哈哈哈

以防万一 测试了一下,在最后加一个最大数,依旧work. 但是...在中间加一个最大数...就崩坏了

继续探索

好像找到问题了

问题就是 写的思路应该体现“两者对比 数值大的继续跟下一个再对比 比到最后一项停下” 而不是罗列两两相比的结果

就算改成如下 给find_max一个确定的值也无果

def find_max(array)
  i = -1
  
  while i >= -1
    if array[i] > array[i+1]
      a = array[i]
    else
      a = array[i+1]
    end

    i += 1

  end

  return a

end

arr = [8, 12, 36, 53, 9, 75, 3, 71, 59, 88]

max = find_max(arr)
puts "Max is #{max}"

等等...不一定要用loop写啊...array有自己的全套数据跑下来的文法

for 或者 .each两者一个作用啊啊啊!!!可以思考用这个文法!!!

嗯...尝试了一下 连.each_with_index都用上了还是没办法...呜呜呜 继续loop大法好了...难过

嗯 镇定,别毛躁,想想对比方法具体是“第一项跟第二项比较,留下一个, or ,再跟第三项对比”这要如何抽象成数字表达,重点是如何表述“留下最大的继续跟其他项比较”

这样的写法就“没循环起来” 观察到数值只限制在first second last这三个数据间比较...头疼...why无法循环起来 明明加了 i += 1

认真想了一下,不用三个,两两相比取大的值,一开始 ab比,大的设定成 maxnumb然后 i += 1执行后,maxnumb 只要再跟 b比较即可 嗯,这个思路估计可以

按照“两两比较 大的设定成max继续跟下一个比”的思路写了几版 都无法准确执行 然后一气之下...

虽然能正确运作了...但是不能这样啊啊啊

继续探索吧 思路应该是对的

嗯 其实不用把index设置成-1 index为 0的时候就是第一项 可以从第一项开始的...

所以如何让x是个“留下更大值”再继续比较 而不是i一变就跟着变...

嗯 run了一些 感觉问题出在return x这句上...一旦满足条件然后执行了这句 就中止了。所以这句是结论代码吗?自动中止功能?!

尝试了多种自己想出来的“保持原值”的写法 最后找了Google出来的Java语言的视频,得到了灵感,一下子写出来了

所谓的保持原值,不就是什么都不做,什么都不做的话,就压根别写了就好了,谁规定了if条件句必须有个else的部分啊!!只写需要改变的那部分就好了!!!砍掉“保持原值”的部分 一下子就搞定了!!妈呀真的太不容易了!!

def find_max(array)
  i = 0
  x = array[0]

  while i < array.length
    if x <= array[i]
      x = array[i]
    end
    i += 1
  end

  return x

end

arr = [8, 12, 36, 53, 9, 75, 3, 71, 59, 88]

max = find_max(arr)
puts "Max is #{max}"

其中定要写if x <= array[i]就是必须有“=”等号 不然的话就无法用array[i]上阵了...用array[i+1]要报错的

不然

或者继续改

Question 17

前一题思路对了 这里就类似了

但果然还是遇到问题了

尝试改了两处


还是报错

这个private method报错要如何搞定啊...

简单粗暴的搞定了

Question 18

此处的index就用 i += 1的方法来表达 而且我第一次写还多搞了一行 arr[i] = i * i写成如下样式

Question 19

本来以为很简单的...

结果这样写整排都会显示出来

在思考是否因为array << i导致全部的i都被丢进去了?!!

为了找出原因 开始一行行代码排查 后来干脆删掉一片

居然还是...

所以显示全部arr的数据 不是array << i这行导致的 而是arr.each do导致的!!!妈耶...

认真想一想,这样写其实只是执行两个条件其一而已...是 or 的关系,其实我要写的是 and 的关系,所以这样书写肯定不对...而且再认真想想,0/2也等于 0所以肯定也是偶数啊,我直接合并两者即可,不用特定的把 0的情况分开写啊...

然后再添加一个varx,让它等于 i/2的值, 再用x的数值来写条件, 改成这样估计能成

为了找到原因 我加了一句 想找到问题所在

结果是这样的

对比了一下 感觉错误在 var挑错了哈哈哈

最后不信邪 改了一下

Question 21

一开始还疑惑要怎么switch position后来看到了 rotate!这个写法可以位置互换啊哈哈哈!!!看文档很重要啊哈哈哈

嗯 然后用嵌套while条件来实现吗?

嗯 有点头疼,拆分开来一个个步骤写吧,先写一个最小值如何找

等等,互相交互数值...这不是Question 2里面的思路吗?!

估计要再嵌套一个while的条件就能自动循环下去

我在想,是否以为i已经循环到arr.size的数值导致的吖?

真的解决了...妈耶...

Question 22

思路就是 把完整的array array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]给定义出来,然后从中挑出arr中存在的数值,不就搞定了...这样想的话,这题就是考验要怎么写delete

这样写的话,没有变化,估计又是因为漏掉了puts "output"这句导致

卧槽...成功了...

相关文章

  • 基础编程 7

    Question 16 欢迎勉强算全新的知识 Array ,目前的初印象是,计算机里的array是一列数列的感觉?...

  • Java编程基础(7)

    Java基础知识:Java字符串的处理(2) 6. Java提取子字符串(substring()) String ...

  • 可视化图形编程学习适合零基础的孩子吗

    如果孩子在7-13岁,没有编程基础,可以尝试可视化编程工具。孩子可以选择编程语言Python。在专业老师指导的情况...

  • 廖雪峰python3 教程

    观其大纲 1 python基础 2 函数 3 高级特性 4 函数式编程 5 模块 6 面向对象编程 7 面向对象高...

  • 7-Shell 编程基础

    编程语言: 编译器,解释器 编程语言: 机器语言,汇编语言,高级语言 静态语言:编译型语言 (必须要编译后才能执行...

  • 基础篇----Swift Apprentice中文版

    基础篇 本篇中的7个章节,主要讲解从计算机工作底层机制到数据结构这些Swift编程的基础,通过这些基础知...

  • 9.25 c++ 总结

    Windows编程基础 总结: 25号开始学习Windows编程基础,MFC编程。Windows和MFS中的字符,...

  • JS DOM基础

    javascript组成 ECMAScript: (3/5/6/7)它是JS语言的标准,规定了JS的编程语法和基础...

  • 嵌入式LINUX开发三步走

    第一学习阶段,主要打好基础,学好C编程,Linux系统编程。 1、C语言编程基础 2、嵌入式开发基础:Linux概...

  • 2018-10-18

    编程基础

网友评论

      本文标题:基础编程 7

      本文链接:https://www.haomeiwen.com/subject/eadowhtx.html