6月1日 练习
题目1 求n的阶乘 老拼装新酒
n的阶乘 老方法
int main()
{
int i = 0;
int sum = 1;
int n = 0;
printf("请输入数字:");
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
sum = sum * i;
}
printf("结果是%d", sum);
return 0;
}
调用函数法
int jiecheng(int x)
{
int i = 0;
int sum = 1;
for (i = 1; i <= x; i++)
{
sum = sum * i;
}
return sum;
}
int main()
{
int n = 0;
int sum = 0;
printf("请输入数字:");
scanf("%d", &n);
sum = jiecheng(n);
printf("结果是%d:", sum);
return 0;
}
/
//递归
//将复杂的问题简单化
123*…n 分开乘 n *(1 2 3 4 5) 我喜欢这么做
///另外我喜欢像verilog 一样函数模块这种写在后面,因为这里是一个东西
自己先定好主题框架
> int jiecheng(int);
> int main() {
> int n = 0;
> int sum = 0;
> printf("请输入数字:");
> scanf("%d", &n);
> sum = jiecheng(n);
> printf("结果是%d:", sum);
> return 0; } int jiecheng(int n) {
> if (n > 1)
> {
> return n * jiecheng(n - 1);
> } else { return 1 ; } //
题目2 求斐波那契数列
求斐波那契数列
i
nt fib(int);
int main()
{
int n = 0;
int sum = 0;
printf("please print number");
scanf("%d", &n);
sum = fib(n);
printf("%d\n", sum);
return 0;
}
int fib(int n)
{
if (n <= 2)
{
return 1;
}
else
{
return (fib(n - 1) + fib(n - 2));
}
}
///尝试用非递归法完成斐波那契数列
int main()
{
int n = 0;
int a = 1;
int b = 1;
int c = 2;
int i = 0;
//int tep1 = 0;
//int tep2 = 0;
printf("please print number");
scanf("%d", &n);
if (n == 1||n==2)
{
c = 1;
printf("结果是:%d", c);
}
else if (n > 2)
{
for (i = 3; i <= n; i++)a b c a-b b-c
{
//printf("输出是“%d", c);
a = b;
b = c;
c = a + b;
}
printf("输出是%d", b);
}
return 0;
}
非递归法自己做的,比递归算的简单很多不然你试试40的结果
题目3 求青蛙跳台阶问题
/青蛙跳台阶问题
/一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级的台阶总共有多上种跳法。
首先拿到题踌躇不绝,不知如何下手。其实我是一边打字一边想的。拿到题粗估一下
//n=1,一种 n=2 两种 是吧这总行的,直白的看出来了,我什么也不知道,我怕接下来做要独立出去
// 递归想一下想一下
// 有一个想法就是比如3可以由1与2构成 4由 (3与 2 )。
// n那是不是可以由n-1 与n-2 两个构成
// 验证1-1 2-2 3-3 4-5
//
///思路一 递归 N=n-1+n-2
#include<stdio.h>
int tiao(int);
int main()
{
int n = 0;
printf("你想让青蛙跳多少台阶呢");
scanf("%d", &n);
int sum = tiao(n);
printf("需要跳这么多%d\n", sum);
return 0;
}
int tiao(int n)
{
if (n == 1)
{
return 1;
}
else if (n == 2)
{
return 2;
}
else if (n > 2)
{
return tiao (n - 1) +tiao (n - 2);
}
}