最後一天,我想要用递回(Recursion)来结束我们的三十天!
递回的观念,其实就是让一个函式可以呼叫自己以方便做一些运算。
还记得我们在前面写过一个作业在写阶乘吗?那时候我们用for
回圈去做,那时候其实是用迭代(Iteration)的想法去做。
今天,我们利用递回再写一次阶乘!
先上程序码:
#include<stdio.h>
int factorial(int n){
if(n==1)
return 1;
else
return n * factorial(n-1);
}
int main(){
int number;
printf("Please input a number A >>");
scanf("%d", &number);
printf("A! = %d", factorial(number));
return 0;
}
输出结果:
我先把参考图放上来,等等再解释程序码(为方便讲解,参考图是假设现在输入为 3):
程序码解说:
main()
的上面,就可以不用宣告函式!factorial()
,里面的程序码用 if
判断,如果传入参数 n
等於 1 ,就返回 1 ,若不是,则返回 n * factorial(n-1)
,而因为返回值里面又去呼叫自身函数,所以其实只要 n
不等於 1 ,就会一直呼叫函数直到 n
的值为 1 为止,利用这个特性,我们就能计算阶乘。不懂的读者可以看上面附图,不过那张图为了方便解释,是假设现在 n=3!printf()
,并呼叫我们写的函式,就可以输出我们要的答案了!其实,函式与递回观念对以前的我来说,不是一个容易理解的东西!但多想、多写就会越来越了解喔!
今天是轻松学 C 语言的第 30 天,我的分享也告一段落了,希望这些文章可以帮助到需要的读者!
<<: day30_arm 还是 x86? 我知道该怎麽选了
上一篇介绍了Tell me the frequencies!,ASCII CODE码来表示总共出现那...
version: python 3.8.3 django 3.2.4 建立名为 NOTES,APP名...
实码演示 | 算术-数值 | 逻辑-T/F | 递增递减 | 前置後置 🐄点此填写今日份随堂测验 ...
更改 state 有其风险,State manipulation 有赚有赔(?),更改前应详阅官方文...
我很重视客户的意见与收货速度。 当时我是网路拍卖的创办人,与客户约定好了要五天内到货。为了达成目标,...