[QUOTE=DarkSpy]输入一个数 n, 要求写一个 f( n) 的函数, 计算 从 0 到 n 为止有几个 1 出现,函数返回出现 1 的数字的值。8 g, M" O2 R0 O7 ~; A3 m
例如 f(11), 0 ~ 11 就有 4 个 1 出现, 于是就返回 4[/QUOTE]
' F) y8 Z0 f- b! A0 H, o7 X1 K& a1 k% ^1 ~' ?% u3 |9 w9 k& a
我觉得我的结果没有错啊。- c. _- A A. M! \% `( l' ?, Q% c2 _6 b
( P2 M" [+ a% S! U: y/ l8 u
2 N" J) @: W/ G1 ?7 Gf(n): 输出 1 的个数:
- W2 L' U2 c0 s7 r# g& D* }f(1) 输出 1;f(10) 输出 2 ;f(11) 输出 4 ;f(11110)输出 5555 ;! |+ D/ M7 |8 B B) k" u
f(199981) 输出 199981 ; f(200001) 输出 200001+ ?! o9 P, }% \0 S) `# d/ K( e" U
5 l2 D3 |+ I& P' f3 r[QUOTE=DarkSpy]第二个是在第一道题目的算法基础上,求出所有 f(n ) == n , 和计算结果一致的数字, 例如我输入 f(1), 那么肯定只有 一个 1, 所以 f(n) 返回的是 1, 而n 也是 1, 那么 f(n)肯定是 == n 了。[/QUOTE]( K {, B, |0 L4 U
2 g4 C" c% P0 S2 C$ I+ b5 V/ u6 d: Bf(1) 输出 1:这时 f(1)=1; 9 ?8 L- n/ L5 l, }4 _6 v
f(199981) 输出 199981 ; 这里有两个结果(1 的个数 )和 输入的数字 相等f(1)==1; f(199981)==199981 (1 的个数和输入的数字相等)! Y; ?! a: l* v
同样:
1 h% f9 M' x# _) G f(200001) 输出 200001 ;这里有十二个结果(1 的个数 )和输入的数字相等 f(1)==1; f(199981)==199981 ; f(199982)==199982 ; f(199983)==199983 ; f(199984)==199984 ; f(199985)==199985 ; f(199986)==199986 ; f(199987)==199987 ; f(199988)==199988 ; f(199989)==199989 ;......f(200001)==200001 (1 的个数和输入的数字相等)6 Z7 x: J5 s+ U a
) V# `" G) ?: a( ` }: h
由此我认为在 n<199981 中,只有一个结果和输入的数(n)相等,就是 n=1 的时候。