c语言递归算法1加到100
时间: 2023-09-07 13:15:23 浏览: 75
好的,这是一个简单的递归算法,可以用来计算1加到100的和:
```c
#include<stdio.h>
int sum(int n)
{
if(n == 1)
return 1;
else
return n + sum(n - 1);
}
int main()
{
int n = 100;
int result = sum(n);
printf("1 + 2 + ... + %d = %d\n", n, result);
return 0;
}
```
运行结果为:
```
1 + 2 + ... + 100 = 5050
```
相关问题
c语言递归算法
递归是一种非常有用的算法,可以用来解决许多问题。在C语言中,递归函数是一种函数,可以在函数内部调用自身。以下是一个递归函数的例子,用于计算阶乘:
```c
#include <stdio.h>
int factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n-1);
}
}
int main() {
int n = 5;
printf("Factorial of %d is %d", n, factorial(n));
return 0;
}
```
在这个例子中,递归函数 `factorial` 接收一个整数参数 `n`,并返回 `n` 的阶乘。如果 `n` 是0,则返回1;否则,返回 `n` 乘以 `factorial(n-1)`。这个函数将一直递归调用自己,直到 `n` 等于0为止。
注意,在使用递归时,需要特别注意递归的终止条件,否则程序可能会无限地递归下去,导致栈溢出。
汉诺塔c语言递归算法
以下是C语言实现汉诺塔递归算法的代码:
```c
#include <stdio.h>
void hanoi(int n, char A, char B, char C) {
if (n == 1) {
printf("%c -> %c\n", A, C);
} else {
hanoi(n - 1, A, C, B);
printf("%c -> %c\n", A, C);
hanoi(n - 1, B, A, C);
}
}
int main() {
int n;
printf("请输入汉诺塔的层数:");
scanf("%d", &n);
printf("汉诺塔的移动步骤如下:\n");
hanoi(n, 'A', 'B', 'C');
return 0;
}
```
代码解释:
- `hanoi`函数是递归函数,用于实现汉诺塔的移动。
- `n`表示汉诺塔的层数,`A`、`B`、`C`分别表示三个柱子。
- 当`n`等于1时,直接将A柱子上的盘子移动到C柱子上。
- 当`n`大于1时,先将A柱子上的`n-1`个盘子通过C柱子移动到B柱子上,然后将A柱子上的最后一个盘子移动到C柱子上,最后将B柱子上的`n-1`个盘子通过A柱子移动到C柱子上。
- `main`函数用于输入汉诺塔的层数,并输出移动步骤。