C语言学习笔记1——10进制转换2进制(递归调用)

一、代码如下:

#include<stdio.h>

void fun(int n) { if(n/2) fun(n/2); printf("%d",n%2); } int main() { fun(10); printf(" "); return 0;

}

二、代码执行流程:

主要执行段:

if(n/2) fun(n/2); printf("%d",n%2);

程序第一次执行:

if(10/2=5≠0≠0)/值为真,执行内部语句 fun(10/2=5); /fun(5)目前未知 printf(“%d”,10%2); /此句的执行必须在if语句内的语句执行完后,即内部语句出现明确值时

程序第二次执行:

if(5/2=2.5≠0≠0)/值为真,执行内部语句 fun(5/2=2.5); /定义类型为整型,将2.5强制转换为2 ,fun(2)目前未知 printf(“%d”,5%2); /此句的执行必须在if语句内的语句执行完后,即内部语句出现明确值时

程序第三次执行:

if(2/2=1≠0≠0)/值为真,执行内部语句 fun(2/2=1); /fun(1)目前未知 printf(“%d”,5%2); /此句的执行必须在if语句内的语句执行完后,即内部语句出现明确值时

程序第四次执行:

if(1/2=0.5)/将0.5强制转化为整型0,值为假 fun(n/2); /不在执行此句

printf(“%d”,1%2); /此句执行输出1%2=1

三、递归(过程见照片)

紫色为递归流程

经验分享 程序员 微信小程序 职场和发展