借助 java 语言, 运用递归算法计算整数 n 的二进制表示中 1 的个数
/ * ใช้อัลกอริทึมแบบเรียกซ้ำเพื่อคำนวณ * จำนวน "1" ในนิพจน์ไบนารี * ของจำนวนเต็ม N. * หมายเหตุ: ถ้า n เป็นคี่แล้ว * ผลลัพธ์คือผลลัพธ์ของ N/2 บวก 1. * และ โปรแกรมใช้การดำเนินการบิตเพื่อปรับปรุงประสิทธิภาพแม้ว่ามันจะไม่จำเป็น * แต่ความคิดที่ฉันคิดว่าดี * โปรแกรมนี้เขียนโดย Zewang Zhang ที่ * 2015-5-4 ในหอพัก Sysu */คลาสสาธารณะ calculatenumberinbinaryExpression {// วิธีการหลัก โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// ตัวอย่างเช่นทำให้ n เท่ากับ 13 ผลลัพธ์แสดง 3 system.out.println (numofeven (13)); // ตัวอย่างเช่น Make N Equals 128 ผลลัพธ์แสดง 1 System.out.println (numofeven (128)); } // วิธีการคงที่ของ numofeven เป็นวิธีการเรียกซ้ำ สาธารณะคงที่ int numofeven (int x) {// ฐานของการเรียกซ้ำ if (x == 0) {return 0; } // ถ้า x เป็นคี่ อื่นถ้า (x%2! = 0) {return numofeven (x >> 1) +1; } // ถ้า x เป็นคู่ยกเว้น 0. else {ในขณะที่ (x%2 == 0) {x = (x >> 1); } return numofeven (x); -
来个最简单的, 不过未测试::
สาธารณะ int a (int i) {ถ้า (i == 0 || i == 1) return i; return i%2+a (i/2);}
以上所述就是本文的全部内容了, 希望大家能够喜欢。