• 递归与非递归打印乘法口诀表--Scala(指令式、函数式思维练习)


     1 object Test extends App
     2 {
     3   def printMultiTable()
     4   {
     5     var i = 1
     6     while (i < 10)
     7     {
     8       var j = 1
     9       while (j <= i)
    10       {
    11         val prod = i * j
    12         if (j != 1) print("  ")
    13         val str = s"$j * $i = $prod"
    14         val k = str.length
    15         //        while (k <= 10)
    16         //        {
    17         //          print(" ")
    18         //          k = k + 1
    19         //        }
    20         if (k < 10)
    21         {
    22           print(" " * (10 - k))
    23         }
    24         print(str)
    25         j += 1
    26       }
    27       println()
    28       i += 1
    29     }
    30   }
    31 
    32   // printMultiTable()//打印测试

    //返回第i行第j列的单个乘法式子
    33 def multiExpression(i: Int, j: Int): String = 34 { 35 val res = i * j 36 s"$j * $i = $res "//注意j在前 37 }
    38 //乘法表,至第i行第j列 39 def multiTable(i: Int, j: Int, str: String): String = 40 { 41 if (i <= 0 && j <= 0) 42 { 43 str 44 } 45 else if (j == 1) 46 {
          if(i == 1)
            multiExpression(1, 1) + str
          else
    47    multiTable(i - 1, i - 1, " " + multiExpression(i, 1) + str )//在后面追加打印出的单个乘法式子,注意换行 48 } 49 else 50 { 51 multiTable(i, j - 1, multiExpression(i, j) + str) 52 } 53 } 54 55 println(multiTable(4, 4, ""))//打印测试 56
    //返回第i行,从该行的第1到第j个式子; 一行 = 前j-1个式子 + 第j个式子 57 def multiLine(i: Int, j: Int, str: String): String = 58 { 59 if (j == 0) 60 { 61 str 62 } 63 else 64 { 65 multiLine(i, j - 1, multiExpression(i, j) + str) 66 } 67 } 68 //利用子表“加上”当前行的思维,递归 69 def multiTable2(i: Int): String = 70 { 71 if (i == 1) 72 { 73 "1 * 1 = 1 " 74 } 75 else 76 { 77 multiTable2(i - 1) + " " + multiLine(i,i,"") 78 } 79 80 81 } 82 83 println(multiTable2(3)) 84 }
  • 相关阅读:
    dedecms自定义表单提交获取时间跟ip地址
    JQuery购物车多物品数量的加减+总价计算
    jquery手机触屏滑动拼音字母城市选择器代码
    js实现图片上传实时显示
    js实现发送验证码倒计时效果
    JS 仿支付宝input文本输入框放大组件
    js实现倒计时效果
    jquery统计输入文字的个数并对其进行判断
    【Linux】Linux系统安全设置
    java泛型(generics)
  • 原文地址:https://www.cnblogs.com/yongwangzhiqian/p/4872746.html
Copyright © 2020-2023  润新知