士兵算法

题目描述:

键盘输入三个数字,以空格分隔

第一个数字表示有多少个士兵(从1开始编号)

第二个数字表示接下来会输入几组数字

第三个数字表示需要输出几号士兵最后的编号

接下来输入的两个一组的数字,两个数字以空格分开,表示需要交换位置的两个士兵的编号

例如: 2 8

表示 2号和8号交换位置,3号和7号交换位置,4号和6号交换位置,5号位置不变

如果有多组输入,进行同样操作,

最后输出第一次的第三个数字的士兵最后所处的位置

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>士兵算法</title>
  <script>
    let str1 = prompt("请输入三个数字(以空格分隔):");
    let arr1 = str1.split(" ");
    let resultIndex = arr1[2]-1;
    //console.log(arr);
    let num = [];
    for(let i=0; i<arr1[0]; i++) {
      num.push((i+1))
    }
    let count = arr1[1];
    let index1;
    let index2;
    for(let i=0; i<count; i++) {
      let str = prompt("请输入两个数字(以空格分隔):");
      let arr = str.split(" ");
      index1 = arr[0]-1;
      index2 = arr[1]-1;
      let resArr = change(num);
      //console.log(resArr);
    }
    // let str2 = "1 5";
    // let num2Arr = str2.split(" ");
    // let str3 = "2 9";
    // let num3Arr = str3.split(" ");

    function change(arr) {
      console.log(arr);
      if(index1 >= index2) {
        console.log(arr[resultIndex]);
        return arr;
      }
      let temp = arr[index1];
      arr[index1] = arr[index2];
      arr[index2] = temp;

      change(arr, index1++, index2--);
    }
    //let arr3 = change(arr2, 2-1, 4-1);
    //let arr4 = change(arr3, 1-1, 4-1);
  </script>
</head>
<body>

</body>
</html>
原文地址:https://www.cnblogs.com/lilililiwang/p/14841252.html