职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 314|回复: 0

c语言:用可视化递归做阶乘的方法。

[复制链接]
只学java 发表于 2011-9-25 11:34 | 显示全部楼层 |阅读模式
递归确实是一个难以理解的地方。一个可视化的能实时监视的递归过程确实是一个很好玩的东西啊。有兴趣的同学不妨来看一下,自己做一次试试。。
C编译器一个(本代码在VC++2005编译通过)。电脑一台。 先贴上我的源代码。。

#include "stdio.h"
double fun1(double num);//函数原型。
int main(){
   int nr;
   bool isExit=false;
   char ch;
   do{
      printf("PleaseEnterTheNumber:");
      scanf_s("%d",&nr);
      printf("The Result of %d! is %12.0f.\nPress E To Exit,N To Go On Calculate:",nr,fun1(nr));
      do{
         ch = getchar();
      }while(!(ch == 'E'||ch == 'e'||ch == 'N'||ch == 'n'));
      switch (ch){
         case 'E':
         case 'e':
         isExit=true;
         break;
         case 'N':
         case 'n':
         isExit=false;
         break;
      }//确认按键
   }while(isExit==false);
   return 0;
}
double fun1(double num){//递归函数体
   double num1;
   if (num >1 ){
      printf("Calculating Step%.0f...\n",num);
      num1=fun1(num-1);
      printf("Calculate %.0f*%.0f Finished.\n",num1,num);
      return num1*num;
   }
   else
     {
     printf("Got the Baseline Condition! Now Return1.\n");
     return 1;
   }
}

现在贴上我的运行图:输入的数据是26。
99636c0ef61de6ad7acbe1f3.jpg

注意事项
其中的许多printf是可自主修改的哦。
还有一个scanf_s如果编译器不支持要换回scanf这个原形。
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-3-29 22:49 , Processed in 0.113105 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表