一道递归题目
C语言 通过递归函数的定义,计算某非负整数n的阶乘并输出结果值。 程序答案如下 long fac(int n) { long f; if(n==0) f=1; else f=n*fac(n-1); return(f); } main() { int n; scanf("%d",&n); printf("%d!=%ld\n",n,fac(n)); } 各位达人们能不能告诉我为啥第五行是f=1。而不是直接跳出条件语句。f=1不是把1赋给f了吗。这样不是把之前的累乘结果都变回1了吗?为什么程序还能正确执行。为什么会是f=1?
假如把第五行改成return 1; return(f);改成 return(n*fac(n-1)); 你还有问题吗? 如果有,那么 A{...call B;...} B{...call C;...} C{...return;} C里的return,是回到B里面还是会到A里面? 现在还有问题吗?
答:蝉,俗称知了,它的“寿命”,即完成一个世代约为10年至13年。其间,潜伏在地下约10年,在地面上的时间却只有80多天。 潜伏在地下时,它被称为“若虫”,以吸吮植...详情>>
问:挺简单的一C函数,不过我是初学者,暂时还不会写,请好心人多多帮忙!
答:int mystrlen(char *str) { int n = 0; while (*str) { n++; str++;} return n; } voi...详情>>