递归练习1708
给定10进制正整数n,输出其2进制表示。
#include <stdio.h>
void dfs(int n) {
if (n > 1) dfs(n / 2);
printf("%d", n & 1);
}
int main() {
int n;
while (~scanf("%d", &n)) {
dfs(n);
puts("");
}
return 0;
}
更一般地,将正整数n用b进制输出的代码如下:
void print(int n, int b) {
if (n >= b) print(n / b);
printf("%d", n % b);
}
Sinus Dances
定义:A[n] = sin(1-sin(2+sin(3-sin(4+…sin(n))…), S[n] = (…(A[1]+n)A[2]+n-1)A[3]+…+2)A[n]+1,现给定n,输出S[n]。
#include <bits/stdc++.h>
using namespace std;
void dfsA(int n) {
if (n == 1) {
printf("sin(1");
} else {
dfsA(n - 1);
printf("%ssin(%d", n & 1 ? "+" : "-", n);
}
}
void A(int n) {
dfsA(n);
for (int i = 0; i < n; i++)
printf(")");
}
void S(int x, int n) {
if (x == 1) {
A(1);
printf("+%d", n);
} else {
printf("(");
S(x - 1, n);
printf(")");
A(x);
printf("+%d", n + 1 - x);
}
}
int main() {
int n;
while (~scanf("%d", &n)) {
S(n, n);
puts("");
}
return 0;
}