c语言递归方法和技巧
C语言递推与递归的区别?
C语言递推与递归的区别?
递推:知道第一个,推出下一个,直到达到目的。
递归:要知道第一个,需要先知道下一个,直到一个已知的,再反回来,得到上一个,直到第一个。
c语言怎么用递归函数绘制一个同心三角形?
创建三角形图案。
实例 - 使用 * 号
#include ltstdio.hgt int main() { int i, j, rows printf(#34行数: #34) scanf(#34%d#34,amprows) for(i1 iltrows i) { for(j1 jlti j) { printf(#34* #34) } printf(#34
#34) } return 0 }
* * * * * * * * * *
2的n次方递归求值?
使用翻一番的技巧。
比如,2的9次 则 1 * 2 2;2 * 2 4;4 * 4 16;16 * 16。。。;
指数:1-----------2-----------4------------8---------------
对应代码:
能翻倍的情况下
//能翻
while((ex1)n) {
//翻
res res * res;
//指数实际增长
ex1;
}
1
2
3
4
5
6
7
1
2
3
4
5
6
7
不能翻倍的情况下
不能翻:则把差值作为指数递归计算。
当差值为0时,就说明到头了,只剩最后一个数字。 return 1 。乘数字本身即可。
return res*pow(a, n-ex);
1
1
代码如下
static int pow (int a,int n) {
if( n 0){
return 1;
}
int res a;
int ex 1;
//判断能不能翻倍
while((ex1)n) {
//翻
res res * res;
//指数实际增长
ex1;
}
//不能翻:则把差值作为指数递归计算。
// 当差值为0时,就说明到头了,只剩最后一个数字。 return 1 。乘数字本身即可。
return res*pow(a, n-ex);}