多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

函数递归的练习

函数递归的练习 斐波那契数列的实现输入一个正整数用迭代和递归两种方式简单实现斐波那契数列Fibonacci sequence计算公式Fn{0,n01,n1Fn−1Fn−2,n≥2 F_n \begin{cases} 0, n 0 \\ 1, n 1 \\ F_{n-1} F_{n-2}, n \ge 2 \end{cases}Fn​⎩⎨⎧​0,1,Fn−1​Fn−2​,​n0n1n≥2​迭代的写法intFib(intn){inta1;intb1;intc0;if(n3)return1;for(inti2;in;i){cab;ab;bc;}returnc;}递归的写法intFib(intn){if(n3)return1;returnFib(n-1)Fib(n-2);}需要注意的是虽然递归的写法简洁但当输入值非常大时计算效率非常慢所以更推荐使用迭代的方式。递归实现n的k次方编写一个函数实现n的k次方使用递归实现。intPow(intn,intk){if(k0)returnn;elseif(k1)returnn*Pow(n,k-1);}计算一个数的每位之和写一个递归函数DigitSum(n)输入一个非负整数返回组成它的数字之和。例如调用DigitSum(1729)则应该返回1729它的和是19输入1729输出19intDigitSum(intn){if(n9)returnDigitSum(n/10)n%10;elsereturnn;}阶乘函数阶乘factorial计算公式Fac(n){1,n0n∗(n−1)!,n0 Fac(n) \begin{cases} 1, n0\\ n * (n - 1)! , n0 \end{cases}Fac(n){1,n∗(n−1)!,​n0n0​迭代的写法intFac(intn){intret1;for(intin;i1;i--){ret*i;}returnret;}递归的写法intFac(intn){if(n0)return1;elsereturnn*Fac(n-1);}打印一个数的每一位输入一个正整数用递归方式实现打印整数的每一位voidPrint(intn){if(n9)Print(n/10);printf(%d ,n%10);}
返回列表