递归问题

阳光穿透心脏的1/2处 2022-09-24 09:23 245阅读 0赞

关于递归求二进制的一点小问题

看下面的代码,虽然只是多了一个等号,但是结果却不一样,要深刻理解。

  1. void to(int num)
  2. {
  3. printf("num: %d\n ", num);
  4. if (num == 0 )
  5. {
  6. return;
  7. }
  8. else
  9. {// 1: num /2 与 num /= 2 有什么区别?
  10. //to(m /= 2);//这儿是把 m/=2 的值当做参数传递给形参,而且改变了m的值在程序中。
  11. to(num / 2); //这儿是把 m/2 的值当做参数传递给形参。
  12. //如果是先把印,后调用这两种写法都没问题,而如果是先调用,后打印这样打印中使用的 m 值就不同了
  13. //一个是 m ,一个是 m = m/2 (m 除以 2 )后的值,所以先调用后打印有区别。
  14. printf("%3d", num % 2); //这个放在 调用前后,如果是 to(m/=2)时,观察区别。
  15. }
  16. }

main.c

  1. void main1()
  2. {
  3. to(10);
  4. system("pause");
  5. }

发表评论

表情:
评论列表 (有 0 条评论,245人围观)

还没有评论,来说两句吧...

相关阅读

    相关 问题剖析

    原来大一时只是简单接触了递归,但是并没有做深入的思考和理解。如今决定在算法上下一番功夫,所以翻出来再次学习,并做此总结。 递归最深层次的精髓我感觉我还不能真正掌握,个人认为