test.js 902 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. 'use strict';
  2. const limit = 6;
  3. // for (let i = limit; i <= limit; i++) {
  4. // const r1 = limit % 2;
  5. // if (r1 > 0) {
  6. // // 奇数
  7. // const mid = (limit - 1) / 2;
  8. // } else {
  9. // // 偶数
  10. // }
  11. // }
  12. const loop = ({ limit, els = 0 }) => {
  13. if (limit === 1 && els === 0) {
  14. console.log('比赛结束');
  15. return;
  16. }
  17. const r1 = (limit + els) % 2;
  18. let mid;
  19. if (r1 > 0) {
  20. // 奇数
  21. mid = (limit + els - 1) / 2;
  22. els = 1;
  23. console.log('轮空1支队伍');
  24. console.log(`奇数:limit:${mid};els:${els}`);
  25. } else {
  26. // 偶数
  27. mid = (limit + els) / 2;
  28. els = 0;
  29. console.log(`偶数:limit:${mid};els:${els}`);
  30. }
  31. return { limit: mid, els };
  32. };
  33. for (let i = 5; i <= 20; i++) {
  34. console.group(`${i} 支队伍开始淘汰`);
  35. let m;
  36. m = loop({ limit: i });
  37. while (m) {
  38. m = loop(m);
  39. }
  40. console.groupEnd(`${i} 支队伍淘汰结束`);
  41. }