1.算法训练
1.1到n的求和(不能使用各类关键词)
#includeusing namespace std; int qiuhe(int n); int main() { printf("请输入一个数字:"); int a; scanf("%d", &a); printf("%d", qiuhe(a)); return 0; } int qiuhe(int n) { if (n <= 0)return 0; if (n == 1)return 1; return n + qiuhe(n - 1); }
2.算法训练
//1.1到n的乘积(递归算法)
#includeusing namespace std; int chengji(int n); int main() { while (1) { printf("请输入一个数字:"); int a; scanf("%d", &a); printf("%dn", chengji(a)); } return 0; } int chengji(int n) { if (n <= 0)return 0; if (n == 1)return 1; return n*chengji(n - 1); }
//算法训练
//3.斐波那契数(递归算法)
#includeusing namespace std; int fun(int n,int a1,int a2); int main() { while (1) { printf("斐波那契数:n"); printf("请输入前两项n"); int a1, a2; cin >> a1 >> a2 ; printf("请输入运算的位数n"); int a; scanf("%d", &a); printf("%dn", fun(a,a1,a2)); } return 0; } int fun(int n,int a1,int a2) { if (n == 1)return a1; if (n == 2)return a2; else return fun(n - 1,a1,a2) + fun(n - 2,a1,a2); }
//算法训练
//4、n 的第 k 个因子
#includeusing namespace std; int fun(int k,int n) { int a = 0; for (int i = 1; i <= n; i++) { if (n % i == 0)a++; if (a == k) return i; } return -1; } int main() { while (1) { int k, n; printf("请输入k和nn"); scanf("%d %d", &k, &n); printf("%dn",fun(k, n)); } return 0; }
//算法训练
//5、n 的第 k 个因子
#include#include using namespace std; int max(int x, int y) { return x >= y ? x : y; } int fun(int n) { int i = 0; for (int a = 1; a < sqrt(n); a++) { for (int b = a; b < sqrt(n); b++) { for (int c = max(a, b) + 1; c <= n; c++) { if (pow(a, 2) + pow(b, 2) == pow(c, 2)) { i++; } } } } return i; } int main() { while (1) { int n; printf("请输入上限nn"); scanf("%d",&n); printf("%dn",fun(n)); } return 0; }



